我尝试编写一个 bash 脚本来运行位于不同目录中的多个脚本。
我尝试过做类似的事情
#!/bin/bash
path1="/path/to/folder1"
path2="/path/to/folder2"
command="./script"
command_line="cd $path1 -exec $command {} \; cd $path2 -exec $command {} \;"
echo $command_line
eval $command_line
exit
但是没有运气..正如你所想象的,我的 bash 技能接近.. 0
答案1
2 您的脚本的主要问题。
- cd 不再接受任何参数。因此目录名称后面的其余行将被忽略(此处为 -exec $command ...)
- exec(我不知道 -exec 在这里是什么意思)将代替父进程运行命令,即,您的主脚本将被替换,并且脚本的其余部分将不再运行。
每个命令应该是这样的:“cd $pathx; $command”。由于您不想被阻止,因此您必须在后台运行它“(cd $pathx; $command) &”
现在您想对 20 个文件夹执行此操作,您可能想要运行一个循环,如下所示:
for p in `cat file-containing-folder-names`
do
(cd $p; $command) &
done
请记住,这里会产生 20 个不同的进程。确保它不会失控。