我的代码是:
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
错误:
答案 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,包括bash
,ksh
和zsh
。csh
和tcsh
不同的语法规则。)