我在执行这个shell程序时遇到错误..请告诉我什么是错的/?

时间:2013-09-02 17:39:38

标签: shell

我的代码是:

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. 如果[找不到

1 个答案:

答案 0 :(得分:1)

在此上下文中,shell不会将if识别为关键字;它正在寻找一个名为if[的命令而没有找到它。如果您使用ifx启动了一行,则会收到相同的错误。

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

正如Christian.K的评论所说,修复是在if[命令之间插入一个空格:

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

(这适用于sh及其衍生的shell,包括bashkshzshcshtcsh不同的语法规则。)