我有一个shellcript,在行
中告诉我missing ]
if [ $status != "2" && $status != "3" && `echo "$temp1 > $upperLimit" | bc` = "1" ]
以及行中的missing ]
if [ $status = "2" && `cat motionsensordate` \> `date +%s` ]
为什么?
答案 0 :(得分:2)
单[
不支持括号内的逻辑运算符。你必须在
if [ "$status" != 2 ] && [ "$status" != 3 ] ...
对单个括号中的变量使用双引号,以防止变量为空时出现unary operator expected
错误。
或者,切换到双括号:
if [[ $status != 2 && $status != 3 ... ]]
此外,不同于2和3的状态可以用模式表示:
if [[ $status != [23] && ... ]]
答案 1 :(得分:0)
如果您愿意(除了这里的答案)将条件组合在一起:
if [[ ( COND1 || COND2 ) && COND3 ]]
then
echo "$cmd"
break
fi