2011-12-22 101 views
3
i=0 

if [$i -eq 0] 
then 
    echo "i is equal to 0" 
else 
    echo "NOT EQUAL <><><><><><><><><><><><><><><><><><><>" 
fi 

它是一个bash脚本的一部分,它总是需要else分支。我完全陌生,所以它可能是傻的东西有人可以帮我弄清楚为什么这不起作用?

+0

'[$ i -eq 0]'的替代方案可能是'((i == 0))' – potong 2011-12-22 21:39:09

回答

5

你需要[ $i而不是[$i

这是因为[是内置命令,而$i应该是它的第一个参数。如果您错过了命令和参数之间的空间,那么shell将查找[$i命令,并且在评估后会告诉您没有[0命令被执行。

+0

是的。我倾向于这样写“如果[$ x comp $ y];那么”因为我喜欢我的话,然后在同一行。 – MJB 2011-12-22 20:47:00

+0

Hmmno,'['不是内建命令:它是(test)命令的(sym)链接。实际上,'test'和'['之间的唯一区别在于'['形式需要']'作为最后一个参数;)尝试''在你的shell中。 – fge 2011-12-22 22:06:34

+1

@fge:它取决于shell的实现。在较旧的操作系统上,它曾经是一个符号链接。所有现代的炮弹都有这样的内置。运行'输入''查看。 – 2011-12-22 22:39:07

1

''''之前'''之后需要空格。 '['是一个命令。

相关问题