hee*_*ayl 16
假设路径是指目录的路径,请使用run-parts. 来自man run-parts:
run-parts - run scripts or programs in a directory
Run Code Online (Sandbox Code Playgroud)
首先,您需要对要运行的所有脚本设置执行权限。通常run-parts会忽略目录,并且不可执行的文件也驻留在该目录中。
尽管在运行之前您应该检查该--test选项将运行哪些文件:
run-parts --test /path/to/directory
Run Code Online (Sandbox Code Playgroud)
我应该提到,run-parts对于要执行的脚本有严格的命名约定:
If neither the --lsbsysinit option nor the --regex option is given
then the names must consist entirely of ASCII upper- and
lower-case letters, ASCII digits, ASCII underscores, and ASCII minus-hyphens.
Run Code Online (Sandbox Code Playgroud)
检查man run-parts以获得更多想法。
ter*_*don 10
如果您的脚本具有正确的名称,则运行部分将起作用。如果你不想处理重命名脚本以适应run-parts复杂的命名方案,你可以做一些简单的事情
for file in ~/target/*; do $file 2>/dev/null; done
Run Code Online (Sandbox Code Playgroud)
这将尝试执行在~/target. 该2>/dev/null重定向错误消息,以便尝试运行目录或不可执行的文件时,它不会抱怨。
或者,您可以尝试更复杂的
for file in ~/target/*; do
[ -f "$file" ] && [ -x "$file" ] && "$file"
done
Run Code Online (Sandbox Code Playgroud)
这将检查每个结果是否是一个文件 ( [ -f $file ]),是否可执行 ( [ -x $file ]),并且只有当这两个测试都成功时,它才会尝试执行该文件。