首页 > 解决方案 > 在多个子目录下执行多个同名的shell脚本

问题描述

我正在使用父目录中的 shell 脚本来调用多个其他 shell 脚本,它们都具有相同的名称,但在不同的子目录下。让我在下面详细说明:

Parent directory: Script deploy_modules.sh
SubDir A: deploy.sh
SubDir B: deploy.sh
SubDir C: deploy.sh
....
SubDir Z: deploy.sh

脚本 deploy_modules.sh 依次调用每个子目录的 deploy.sh,方法是进入该目录,调用脚本,然后退出并进入下一个目录。

有没有办法在一行命令中顺序执行所有 deploy.sh 文件?我需要该命令足够通用,以自动将任何新添加的子目录包含在另一个 deploy.sh 中,并且在删除一个或多个子目录时不会出错。

标签: bashshelldeployment

解决方案


这将deploy.sh在子目录中找到当前目录所在位置的所有脚本 - 并执行它们。

无需cd进入子目录:

for dep in */deploy.sh; do "$dep"; done

进入cd每个子目录:

for dep in */deploy.sh; do (cd "$(dirname "$dep")"; ./deploy.sh) done

推荐阅读