使用 || 进行 Bash命令错误检查运算符 - 如何在错误检查中运行两个命令?

使用 || 进行 Bash命令错误检查运算符 - 如何在错误检查中运行两个命令?

我刚刚意识到,使用||运算符作为检查来查看命令是否成功完成并不能处理||.

这是我的脚本的一个发挥,我正在等待 ping 返回,如果在一定时间内没有返回,那么它应该运行两个命令(在真实的脚本中,有两个函数,一个用于清理,以及打印错误并退出的一个,我无法将它们组合起来)。

/bin/bash
echo "start"
timeout 10s bash -c 'until ping -w1 -c1 1.1.1.1 >/dev/null 2>&1; do :; done' || echo "unsuc"; exit 1
echo "suc"
exit 0

我的问题是,如果 ping 成功,则脚本只是exit 1.我也尝试过这样做echo "unsuc" && exit 1,但这会导致相同的行为。

如果 ping 命令失败,如何运行两个命令?

答案1

使用组命令(又名“列表”) - 例如... || { echo "unsuc" ; exit 1 ; }

查看man bash并搜索该Compound Commands部分。

或者,使用if语句,例如:

#!/bin/bash
echo "start"
if ! timeout 10s bash -c 'until ping -w1 -c1 1.1.1.1 >/dev/null 2>&1; do :; done' ; then
  echo "unsuc"
  exit 1
fi
echo "suc"
exit 0

相关内容