我的Bash代码中发生了什么?

时间:2016-07-05 02:16:49

标签: linux bash

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

# !/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

1 个答案:

答案 0 :(得分:4)

假设(仅为了示例)mostrar0,那么这一行:

if[$mostrar = 1]  then

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

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

if [ "$mostrar" = 1 ] ; then