Bash 未找到命令从if[-gt]比较触发的错误
我正在浏览这里的示例,希望得到一些帮助来解释为什么这个脚本抛出错误[37:command not found]Bash 未找到命令从if[-gt]比较触发的错误,bash,Bash,我正在浏览这里的示例,希望得到一些帮助来解释为什么这个脚本抛出错误[37:command not found] #!/bin/bash # ex74.sh # This is a buggy script. # Where, oh where is the error? a=37 if [$a -gt 27 ] then echo $a fi exit $? # 0! Why? 之所以在[之后加空格,是因为[也不是语法。它是一个简单的命令。通常是shell的内置命令。she
#!/bin/bash
# ex74.sh
# This is a buggy script.
# Where, oh where is the error?
a=37
if [$a -gt 27 ]
then
echo $a
fi
exit $? # 0! Why?
之所以在[
之后加空格,是因为[
也不是语法。它是一个简单的命令。通常是shell的内置命令。shell执行命令[
,其余部分作为参数,包括]作为强制的最后一个参数。如果不在之后加空格[
shell将尝试以命令的形式执行[任何,但失败
在]前面加空格的原因类似。否则它将不会被识别为自己的参数。[$a
->[$a
。在[
之后和]
之前需要空格谢谢,为什么我需要空格,bash解释器认为[$a是什么?在过去[
是一个与test
具有相同功能的命令。它目前是一个内置命令,但[
在/usr/bin/[
中残留。因此test$a-gt 27]
是好的,但test$a-gt 27]
是坏的。与[$a
相同
if [ $a -gt 27 ]
^
|
add space here