Loading...

文章背景图

Shell脚本如何等待前一个指令执行完再执行下一个指令

2026-02-11
5
-
- 分钟
|

引言

在编写Shell脚本时,确保命令按顺序执行、前一个命令完全结束后才执行下一个命令,是保证脚本逻辑正确性和可靠性的关键。本文将详细介绍Shell中命令顺序执行的机制、常见误区以及如何显式控制执行顺序。

顺序阻塞执行

在Shell脚本中,默认情况下所有命令都是顺序执行且阻塞的。也就是说,Shell会等待当前命令执行完毕(包括成功或失败),才会继续执行下一条命令。

#!/bin/bash

echo "第一步:开始执行"
sleep 3 # 第一步执行后,休眠三秒,再执行第二步
echo "第二步:上一步已完成"

使用ouput=[order] 强行等待执行完毕

#!/bin/zsh

echo '==================拉取最新代码================='
output=`git pull origin main`
echo '==================代码拉取完成================='
echo ''
echo '==================执行文件编译================='
output=`npm run build`
echo '==================文件编译完成================='
echo ''
echo '==================执行文件删除================='
output=`rm -rf /usr/share/nginx/xxx`
echo '==================文件删除完成================='
echo ''
echo '==================执行文件迁移================='
output=`mv xxx/ /usr/share/nginx/`
echo '==================文件迁移完成================='
echo ''
echo '==================开始重启服务================='
output=`nginx -s reload`
echo '==================重启服务完成================='

显式检查并等待服务启动

例如启动一个Web服务后等待其就绪:

#!/bin/bash

./start_server.sh &
SERVER_PID=$!

# 等待服务监听端口
while ! nc -z localhost 8080; do
    sleep 1
done

echo "服务已就绪,继续后续操作"
# 执行测试或部署等操作

评论交流

文章目录