[: : 预期的整数表达式
[: : integer expression expected
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 }'`
printf "count1 : $count1\n"
result1=${count1/.*}
if [ "$result1" -ge "0" ]; then
echo $host
else
echo $host
exit
fi
如果 $result1
的值为 INTEGER 且大于零,它将转到 IF 循环(对我来说很好)
但是当它不是 INTEGER 时,它将进入 else 循环(它应该这样做)并在输出中出现以下错误
line 55: [: : integer expression expected
但我不想在我的输出中出现上述错误。我尝试将 2>/dev/null
与此一起使用,但没有成功。
请帮忙!
将if [ "$result1" -ge "0" ]; then
改为
if (( result1 >= 0 )); then
如果 result1
未定义(或为空)或碰巧是 string
,则此语法不会抛出任何错误。
如果您想优雅地处理空结果,请明确检查它:
if [ -z "$result1" ]; then
: "ignoring empty string"
elif [ "$result1" -ge 0 ]; then
printf '%s\n' "$host"
else
printf '%s\n' "$host"
exit
fi
您还可以在进行算术比较之前检查 result1
是否为有效整数:
function isNumber () {
[[ =~ ^-?[0-9]+$ ]]
}
if ! isNumber "$result1"; then
echo "not a number"
elif [ "$result1" -ge "0" ]; then
echo "null or positive"
else
echo "negative"
fi
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 }'`
printf "count1 : $count1\n"
result1=${count1/.*}
if [ "$result1" -ge "0" ]; then
echo $host
else
echo $host
exit
fi
如果 $result1
的值为 INTEGER 且大于零,它将转到 IF 循环(对我来说很好)
但是当它不是 INTEGER 时,它将进入 else 循环(它应该这样做)并在输出中出现以下错误
line 55: [: : integer expression expected
但我不想在我的输出中出现上述错误。我尝试将 2>/dev/null
与此一起使用,但没有成功。
请帮忙!
将if [ "$result1" -ge "0" ]; then
改为
if (( result1 >= 0 )); then
如果 result1
未定义(或为空)或碰巧是 string
,则此语法不会抛出任何错误。
如果您想优雅地处理空结果,请明确检查它:
if [ -z "$result1" ]; then
: "ignoring empty string"
elif [ "$result1" -ge 0 ]; then
printf '%s\n' "$host"
else
printf '%s\n' "$host"
exit
fi
您还可以在进行算术比较之前检查 result1
是否为有效整数:
function isNumber () {
[[ =~ ^-?[0-9]+$ ]]
}
if ! isNumber "$result1"; then
echo "not a number"
elif [ "$result1" -ge "0" ]; then
echo "null or positive"
else
echo "negative"
fi