在以字母“a”开头的目录中执行所有 shell 脚本

vam*_*hna 4 shell shell-script

我在以字母“a”开头的目录中有许多 shell 脚本。我怎么能一次性执行所有这些 shell 脚本?我们可以开发任何其他小脚本来运行它吗?

mal*_*lyy 10

命令行:

for each in path_to_directory/a*.sh ; do bash $each ; done
Run Code Online (Sandbox Code Playgroud)

例子:

:~$ ll | grep \.sh
-rw-rw-r--  1 user user      1476 ??? 25 16:07 123.sh
-rw-rw-r--  1 user user      1176 ??? 25 16:09 222.sh
-rw-rw-r--  1 user user       419 ??? 20 14:03 2.sh
-rw-rw-r--  1 user user       191 ??? 20 17:50 3.sh
-rw-rw-r--  1 user user         9 ???  2 11:53 a1.sh
-rw-rw-r--  1 user user         9 ???  2 11:53 a2.sh

i:~$ cat  q1.sh
echo sadf
:~$ cat  a1.sh
echo 123
:~$ cat  a2.sh
echo 234

:~$ for each in ./a*.sh ; do bash $each ; done
123
234
Run Code Online (Sandbox Code Playgroud)

或者,您可以使用名为 run-parts 的命令行实用程序。该工具可以自动发现一个目录中的多个脚本或程序,并将它们全部运行。

例如,要运行 /etc 中名称以“a”开头并以“.sh”结尾的所有脚本:

$ run-parts --regex '^a.*\.sh$' /etc
Run Code Online (Sandbox Code Playgroud)

使用“--test”选项,您可以打印将要执行的脚本的名称,而无需实际运行它们。这对于测试目的很有用

$ run-parts --test ./my_script_directory
Run Code Online (Sandbox Code Playgroud)