gpt4 book ai didi

bash - 在 bash 中使用 -ne 发现问题?

转载 作者:行者123 更新时间:2023-11-29 09:45:01 25 4
gpt4 key购买 nike

运行下面的代码给我错误

-bash: [: -ne: unary operator expected

res 是 ==""。但我认为 -ne 会将字符串与 int 进行比较。当我确实遇到错误时,它是上面的而不是我想要的是域名和 curls 输出(它在第一次调用时被静音,因为它会将垃圾放在标准输出上)。我如何执行 if 主体?

#!/bin/sh
function test {
res=`curl -I $1 | grep HTTP/1.1 | awk {'print $2'}`
if [ $res -ne 200 ]
then
echo "Error on $1"
curl -I $1
fi
}

test invalidsite.hsdgsdhfgsgdfysgdfgsdfygsyd.com

最佳答案

如果 res 是一个空字符串,您的条件评估为 [ -ne 200] 这就是错误消息所提示的。尝试通过 ["$res"-ne 200] 解决此问题在这里也不起作用,因为空字符串不是数字。改为这样做:[ -z "$res"-o "$res"-ne 200 ]。这将首先检查字符串是否为空(如果是,则失败)。如果它不为空,检查该值是否不为 200。但是如果 res 是一些非整数字符串,这仍然会使 bash panic ,所以我真的会在这里进行字符串比较:[ -z "$res"-o "$res"!= "200"]

编辑:我刚刚想到,如果我们已经在进行字符串比较,您可以删除 -z 并使用 [ "$ res"!= "200"].

关于bash - 在 bash 中使用 -ne 发现问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9553571/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com