我刚刚意识到使用||
operator 作为检查以查看成功完成的命令是否不处理 . 之后的多个命令||
。
这是我的脚本中的一个动作,我正在等待 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 命令失败,如何运行两个命令?
使用组命令(又名“列表”) - 例如
... || { echo "unsuc" ; exit 1 ; }
。查看
man bash
并搜索该Compound Commands
部分。或者,使用
if
语句,例如: