如何在简单的 2 行 bash 脚本中使用退出代码作为条件


url="http://localhost:8080/matlib"
until $(curl "$url" --max-time 10) == 0; do stuck_pid=$(chown_pid); kill -9 $stuck_pid && "killing chmod process";done

我想做的是卷曲这个地址,如果它在 10 秒后超时,那么术语为 PID。

失败的部分是'== 0',这里的目的是将curl的返回代码与0进行比较,但我收到以下错误:

-bash: ==: command not found

这确实是问题所在:

$(curl "$url" --max-time 10) == 0

==运算符必须位于方括号内[[ ... ]]或方括号[ ... ]

但是,您不是在比较curl的退出状态,而是在比较curl的输出,因为您正在执行$(...)或命令替换。

您应该只使用:

until curl "$url" --max-time 10; do ...; done

最新更新