linux - 我的 Bash 代码发生了什么?

标签 linux bash

当我想在屏幕上显示日历时,脚本向我显示条件错误 - if else - 但我不知道为什么;我想应该没问题。

# !/bin/bash
rm --f calen
mostrar = 0
echo "agrega un mes"
read mes
echo "agrega un año"
read year
echo "Agregar [1] para mostrar las dos primeras semanas, o [2] para mostrar las ultimas dos semanas"
read mostrar
if[$mostrar = 1]  then
    cal -m $mes $year >> calen
    head -n 4 calen
else
    cal -m $mes $year >> calen
    head -n 2 calen
    tail -n 3 calen
fi

最佳答案

假设(仅作为示例)mostrar0,则这一行:

if[$mostrar = 1]  then

表示“使用参数 =1]then 运行命令 if[0”。由于您没有名为 if[0 的命令,因此会发生错误。

您可以通过在命令的各个组件周围添加空格来解决大部分问题。此外,您需要在 then 之前使用分号或换行符,并且应该$mostrar 扩展用双引号引起来,以防止文件名扩展和分词(这两者都可能导致奇怪的结果)。所以:

if [ "$mostrar" = 1 ] ; then

关于linux - 我的 Bash 代码发生了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38194293/

相关文章:

java - 使用 java 代码执行 *nix find 命令

r - 虚拟机上带有 Rstudio 的 mxnet 包

bash - 打印最后一个匹配行?

linux - 无法使用 Linux 中的文本编辑器删除前两个编码字符

linux - Web 服务的 Grass 命令

c++ - 我如何强制cmake在Linux中使用/usr/include中的C++头文件?

git - 如何为 bash 脚本编写基于 Web 的 GUI?

bash - 摆脱 "warning: command substitution: ignored null byte in input"

bash 脚本通过 ssh 进入一个盒子并让我进入 python shell

linux - 自定义 SPI 驱动程序来实现 lseek