gpt4 book ai didi

bash - 虽然有多种条件会失去其中之一

转载 作者:行者123 更新时间:2023-12-04 08:04:38 25 4
gpt4 key购买 nike

我尝试使用 2 个条件创建循环,x != 0 或 curl = 成功,curl 模块工作正常,但脚本丢失 [[ x -eq 0 ]]

#!/bin/bash
set -x
x=8
while [[ $x -eq 0 ]] || [[ "$(curl -s -o /dev/null -w ''%{http_code}'' http://nexus_url/path/96."$x"/latest/version.sign)" != "200" ]]
do
((x--))
done
echo $x
当我们尝试使用这样的脚本时
#!/bin/bash
set -x
x=8
while [[ $x -eq 0 ]]
do
((x--))
done
echo $x
它在 x=0 上成功停止
url 检查也可以,但是当我们尝试一起使用它并且没有一个 url 检查成功时,循环变得无穷大,我认为问题出在 ||在条件之间,我如何在 bash 条件下正确使用 OR?

最佳答案

你的条件应该是这样的:

#!/bin/bash
set -x
x=8
while [[ $x -gt 0 ]] && [[ "$(curl -s -o /dev/null -w ''%{http_code}'' http://nexus_url/path/96."$x"/latest/version.sign)" != "200" ]]
do
((x--))
sleep .1
done

echo $x
这本质上是这个伪代码:
x=8
while (x > 0 && curl_cmd != SUCCESS) {
x--;
skeep .1
}
这将尝试运行 curl 8次。当 x==0 时,它将退出循环。或 curl返回成功。

关于bash - 虽然有多种条件会失去其中之一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66280821/

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