如果[-gt]比较,则触发命令未找到错误

时间:2014-09-05 08:48:15

标签: bash

我正在处理http://tldp.org/LDP/abs/html/debugging.html中的示例,并希望得到一些帮助来解释为什么这个脚本会抛出错误的内部[37:命令未找到

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

1 个答案:

答案 0 :(得分:1)

if [ $a -gt 27 ]
    ^
    |
    add space here

[之后的空格的原因是因为[也不是语法。这是一个简单的命令。通常是内置的shell。 shell执行命令[,其余作为参数,包括]作为必需的最后一个参数。如果在[之后没有放置空格,shell将尝试执行[whatever作为命令并失败。

之前空间的原因是相似的。因为否则它将不会被识别为自己的参数。