编写shell脚本遍历client前缀目录实现全流程自动化部署
多client目录批量操作自动化Shell脚本实现
需求背景
现有10个命名为client-1、client-2、…、client-10的目录,以及1个名为nestjs-wrapper的目录。需要遍历所有client前缀的目录执行指定操作,同时兼容后续client目录数量增长的场景,通过Shell脚本完成全流程自动化。
执行逻辑要求
- 首先在父目录执行
nvm use,确认使用指定的Node版本 - 依次进入每个client前缀目录,执行
npm install与node index.js,执行完成后返回父目录,直至所有client目录操作完毕 - 在独立终端后台运行
docker-compose up - 从父目录进入nestjs-wrapper目录,执行
npm run start:dev启动watch模式服务
初始版本实现
最初仅实现了遍历client目录安装依赖的功能,代码如下:
pattern="/home/dario/my-folder/client" for _dir in "${pattern}-"[[:digit:]]*; do [ -d "$_dir" ] || continue; pushd "$_dir" && npm install; done
完整功能实现方案
为了在父目录的独立终端启动docker-compose,单独创建了start-docker.sh脚本,内部仅包含docker-compose up命令。
最终可实现完整流程的脚本如下(可在脚本开头添加nvm use满足Node版本校验要求):
# 可在首行添加 nvm use 确认Node版本 pattern="client" for _dir in "${pattern}-"[[:digit:]]*; do [ -d "$_dir" ] || continue; pushd "$_dir" && npm install && node index.js; popd; done gnome-terminal -- ./start-docker.sh; pushd nestjs_wrapper && npm run start:dev;
脚本说明
该脚本使用相对路径实现需求:首先遍历所有client目录安装依赖并启动服务,之后启动docker-compose,最后启动nestjs-wrapper的watch模式服务。
内容的提问来源于stack exchange,提问作者Rooster
相关产品推荐
相关产品推荐

