比较 shell 中的数字
Compare numbers in shell
比较 shell 中的 2 个响应代码时遇到问题。 运行 curl 并需要验证响应是否在 200 到 400 之间。此外,当服务器关闭时,响应有可能为“000”。
#!/bin/sh
response1="200" #curl first url
response2="000" #curl second url
if (( $response1 -ge 400 || $response1 -lt 200 || $response2 -ge 400 || $response2 -lt 200 )) ; then
echo "Something went wrong, response code is not in success range"
exit 1
else
echo "Success"
exit 0
fi
((: 200 -ge 400 || 200 -lt 200 || 000 -ge 400 || 000 -lt 200 : syntax error in expression (error token is "400 || 200 -lt 200 || 000 -ge 400 || 000 -lt 200 ")
如果我将括号更改为 [[...]],它总是 returns 为真。
如果我将 -lt 更改为 < 并将 -ge 更改为 >= 出现以下错误:
((: 200 = 400 || 200 < 200 || 000 = 400 || 000 < 200 : attempted assignment to non-variable (error token is "= 400 || 200 < 200 || 000 = 400 || 000 < 200 ")
请尝试:
if [ $response1 -ge 400 ] || [ $response1 -lt 200 ] || [ $response2 -ge 400
] || [ $response2 -lt 200 ] ; then
echo "Something went wrong, response code is not in success range"
exit 1
else
echo "Success"
exit 0
fi
错误的操作员。正确的写法是:
if (( response1 > 400 || response1 < 200 || response2 > 400 || response2 < 200 )) ; then
无需使用 $
显式取消引用,只要确保您的变量仅包含整数即可。
比较 shell 中的 2 个响应代码时遇到问题。 运行 curl 并需要验证响应是否在 200 到 400 之间。此外,当服务器关闭时,响应有可能为“000”。
#!/bin/sh
response1="200" #curl first url
response2="000" #curl second url
if (( $response1 -ge 400 || $response1 -lt 200 || $response2 -ge 400 || $response2 -lt 200 )) ; then
echo "Something went wrong, response code is not in success range"
exit 1
else
echo "Success"
exit 0
fi
((: 200 -ge 400 || 200 -lt 200 || 000 -ge 400 || 000 -lt 200 : syntax error in expression (error token is "400 || 200 -lt 200 || 000 -ge 400 || 000 -lt 200 ")
如果我将括号更改为 [[...]],它总是 returns 为真。 如果我将 -lt 更改为 < 并将 -ge 更改为 >= 出现以下错误:
((: 200 = 400 || 200 < 200 || 000 = 400 || 000 < 200 : attempted assignment to non-variable (error token is "= 400 || 200 < 200 || 000 = 400 || 000 < 200 ")
请尝试:
if [ $response1 -ge 400 ] || [ $response1 -lt 200 ] || [ $response2 -ge 400
] || [ $response2 -lt 200 ] ; then
echo "Something went wrong, response code is not in success range"
exit 1
else
echo "Success"
exit 0
fi
错误的操作员。正确的写法是:
if (( response1 > 400 || response1 < 200 || response2 > 400 || response2 < 200 )) ; then
无需使用 $
显式取消引用,只要确保您的变量仅包含整数即可。