我有一个bash变量深度,我想测试它是否等于0.如果是,我想停止执行脚本。到目前为止我有:
zero=0; if [ $depth -eq $zero ]; then echo "false"; exit; fi
不幸的是,这导致:
[: -eq: unary operator expected
(可能由于翻译有点不准确)
请,我如何修改我的脚本让它工作?
看起来你的深度变量未设置。这意味着在bash将变量的值替换为表达式后,表达式[$ depth -eq $ zero]变为[-eq 0]。这里的问题是-eq运算符不正确地用作只有一个参数(零)的运算符,但它需要两个参数。这就是为什么你得到一元操作错误消息。
编辑:正如Doktor J在他的评论中提到的,一个避免检查中未设置变量的问题的安全方法是将变量包含在“”中。看到他的解释的评论。
if [ "$depth" -eq "0" ]; then echo "false"; exit; fi
与命令一起使用的未设置变量对于bash显示为空。你可以使用下面的测试来验证这一点,所有测试都是false并且是等效的,因为xyz是未设置的:
> if [];然后echo“true”; else echo“false”; fi> xyz =; if [$ xyx];然后echo“true”; else echo“false”; fi