我有一个bash变量深度,我想测试它是否等于0。如果是,我想停止执行脚本。到目前为止,我有:
zero=0;
if [ $depth -eq $zero ]; then
echo "false";
exit;
fi
不幸的是,这会导致:
[: -eq: unary operator expected
(由于翻译原因,可能有点不准确)
请问,我如何修改我的脚本让它工作?
我有一个bash变量深度,我想测试它是否等于0。如果是,我想停止执行脚本。到目前为止,我有:
zero=0;
if [ $depth -eq $zero ]; then
echo "false";
exit;
fi
不幸的是,这会导致:
[: -eq: unary operator expected
(由于翻译原因,可能有点不准确)
请问,我如何修改我的脚本让它工作?
当前回答
你也可以使用这种格式,使用比较运算符,比如'==' '<='
if (( $total == 0 )); then
echo "No results for ${1}"
return
fi
其他回答
双括号((…))用于算术运算。
双方括号[[…][]可以用来比较和检查数字(只支持整数),使用以下操作符:
· NUM1 -eq NUM2 returns true if NUM1 and NUM2 are numerically equal.
· NUM1 -ne NUM2 returns true if NUM1 and NUM2 are not numerically equal.
· NUM1 -gt NUM2 returns true if NUM1 is greater than NUM2.
· NUM1 -ge NUM2 returns true if NUM1 is greater than or equal to NUM2.
· NUM1 -lt NUM2 returns true if NUM1 is less than NUM2.
· NUM1 -le NUM2 returns true if NUM1 is less than or equal to NUM2.
例如
if [[ $age > 21 ]] # bad, > is a string comparison operator
if [ $age > 21 ] # bad, > is a redirection operator
if [[ $age -gt 21 ]] # okay, but fails if $age is not numeric
if (( $age > 21 )) # best, $ on age is optional
具体来说:((深度))。以示例为例,输出如下:1。
declare -i x=0
((x)) && echo $x
x=1
((x)) && echo $x
你也可以使用这种格式,使用比较运算符,比如'==' '<='
if (( $total == 0 )); then
echo "No results for ${1}"
return
fi
你可以试试这个:
: ${depth?"Error Message"} ## when your depth variable is not even declared or is unset.
注意:这里是?在深度。
or
: ${depth:?"Error Message"} ## when your depth variable is declared but is null like: "depth=".
注意:这里是:?在深度。
在这里,如果发现变量depth为空,它将打印错误消息,然后退出。
试一试:
zero=0;
if [[ $depth -eq $zero ]]; then
echo "false";
exit;
fi