0

我的代码是:

echo "Enter two numbers"
read a
c=20
echo $c
if[ $c -gt $a ];    then
    echo "This is block 1."
else
    echo "This is block 2"
fi

错误:

  1. 否则出乎意料
  2. 如果 [ 未找到
4

1 回答 1

1

在这种情况下, shell 无法识别if为关键字;它正在寻找一个名为if[但没有找到它的命令。如果你开始一行,你会得到同样的错误ifx

与大多数编程语言不同,shell 认为if[是单个标记。[实际上是一个(可能是内置的)命令,而不是 shell 语法的基本部分(它相当于命令test)。[在命令名称中与字母、数字或下划线一样有效。

if正如 Christian.K 的评论所说,解决方法是在命令和命令之间插入一个空格[

if [ $c -gt $a ]; then
    echo "This is block 1."
else
    echo "This is block 2"
fi

(这适用于sh从它派生的 shell,包括bashkshzsh.csh并且tcsh具有不同的语法规则。)

于 2013-09-02T20:25:23.340 回答