bash 脚本如何运行其他几个脚本?

bash 脚本如何运行其他几个脚本?

我尝试编写一个 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 您的脚本的主要问题。

  1. cd 不再接受任何参数。因此目录名称后面的其余行将被忽略(此处为 -exec $command ...)
  2. exec(我不知道 -exec 在这里是什么意思)将代替父进程运行命令,即,您的主脚本将被替换,并且脚本的其余部分将不再运行。

每个命令应该是这样的:“cd $pathx; $command”。由于您不想被阻止,因此您必须在后台运行它“(cd $pathx; $command) &”

现在您想对 20 个文件夹执行此操作,您可能想要运行一个循环,如下所示:

for p in `cat file-containing-folder-names`
do
  (cd $p; $command) &
done

请记住,这里会产生 20 个不同的进程。确保它不会失控。

相关内容