install.sh
我当前目录中有一个 bash 脚本,并且我有一个apps
包含多个目录的目录。我想循环遍历 app 文件夹中的这些子目录并执行一些脚本。在第一个文件夹中执行脚本后,它应该返回并进入下一个文件夹。我试过了,但它一个接一个地跳过。我的意思是它进入所有奇数文件夹,而不是进入偶数文件夹。
代入install.sh
for f in apps/*;
do
[ -d $f ] && cd "$f" && echo Entering into $f and installing packages
cd ..
done;
答案1
使用父目录的完整路径(在我的情况下apps
目录位于我的主目录中)并删除一个多余的命令(cd ..
)
for dir in ~/apps/*;
do
[ -d "$dir" ] && cd "$dir" && echo "Entering into $dir and installing packages"
done;
参见截图:使用cd ..
命令并使用apps/*
参见截图:无需cd ..
命令并使用~/apps/*
答案2
您可以使用与此建议find
一起使用。您的应该是 exec
install.sh
#!/bin/bash
find ./apps -type d -exec echo Entering into {} and installing packages \;
-exec
用您的命令替换后面的文本
例如
#!/bin/bash
find ./apps -type d -exec touch {}/test.txt \;
它将循环遍历 app 及其所有子目录,并创建一个 text.txt 文件