我正在用 bash 写一个脚本。
如果我位于目录 Foo 中,我只想在 foo 的子目录中运行此脚本,这些子目录名为 foo,且 foo 后面最多包含三个数字。
例如:foo1、foo23、foo345 等。
测试是我的脚本的名称。
这是我到目前为止所拥有的。我不记得如何准确指定我希望该脚本查找哪些目录。
其他重要的事情:我正在 ssh 客户端上运行。
for i in foo*
do
if [ -d $i ]
then
sh ./test
echo "Test is working."
fi
done
答案1
这正确的这样做的方法是让脚本将目录作为参数:
for directory in foo*/
do
./test.sh "$directory"
done
循环中的尾部斜杠for
确保它循环遍历目录和目录的符号链接。将目录传递给脚本可确保您可以移动脚本和目标目录任何地方无需做任何特殊的事情即可使其发挥作用。
要更具体地选择目录,您需要阅读球体,特别是关于 的部分extglob
。