如何并行运行两个独立的bash命令,无需按顺序先后执行
Bash并行执行独立命令的实现方案
问题原因
你之前使用的&&是Bash的逻辑与运算符,仅当前一条命令执行成功(返回码为0)后才会触发后一条命令执行,属于顺序执行逻辑,自然无法满足并行启动的需求。
核心解决方法
使用&将命令放入后台执行,Shell不会等待该命令完成,会立刻执行下一条命令,两条命令完全并行运行,且支持分多行书写无需放在同一行。
适配你的场景的示例代码
你需要实现倒计时同步播放提示音,可参考如下写法:
# 第一步:后台启动音频播放,重定向输出避免干扰终端 # 末尾的&是并行的核心 play ~/xyz > /dev/null 2>&1 & # 可选:记录播放进程的PID,方便后续操作 PLAY_PID=$! # 第二步:直接启动倒计时通知逻辑,无需等待播放完成 for second in {5..0}; do notify-send "倒计时提示" "剩余 ${second} 秒" sleep 1 done # 可选:倒计时结束后如果音频还在播放,主动终止播放进程 kill ${PLAY_PID} > /dev/null 2>&1
其他说明
- 如果你的倒计时逻辑已经封装为独立脚本,直接在后台启动播放命令后,执行对应脚本即可:
play ~/xyz > /dev/null 2>&1 & bash /path/to/your/countdown_script.sh - 若需要两个命令都执行完成后再执行后续操作,可在两条命令启动后添加
wait指令:command1 & command2 & wait echo "两个命令都已执行完成"
内容的提问来源于stack exchange,提问作者user15705894
相关产品推荐
相关产品推荐

