Unix:希望在具有特定名称的目录中运行脚本

Unix:希望在具有特定名称的目录中运行脚本

我正在用 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

相关内容