【发布时间】:2015-06-15 21:17:09
【问题描述】:
COUNTER=0
let COUNTER=COUNTER+1
count=`ssh -i /var/www/.ssh/id_rsa_root -o stricthostkeychecking=no $host $cmd`
count1=`echo $count | awk '{print $4}'`
printf "count1 : $count1\n"
result1=${count1/.*}
if [ "$result1" -ge "0" ]; then
echo $host
else
echo $host
exit
fi
如果$result1 的值是整数并且大于零,它将进入 IF 循环(对我来说很好)
但是当它不是 INTEGER 时,它将进入 else 循环(它应该这样做),输出中出现以下错误
line 55: [: : integer expression expected
但我不想在我的输出中出现上述错误。我尝试使用2>/dev/null,但没有运气。
请帮忙!
【问题讨论】:
-
用shellcheck.net检查你的代码
-
另外,如果您使用
sh -x yourscript运行它,您将看到 actual 值正在使用中,因此您将能够看到它是如何/为什么不是一个整数。 -
另外,您使用
printf错误。不要替换成格式字符串;相反,使用格式字符串告诉系统如何进行替换:printf 'count1: %s\n' "$count1" -
您可能需要检查问题的格式/内容 (How to Ask)。
-
关于确定值是否为 bash 中的整数的主题还有其他问题。
标签: bash if-statement integer