Linux bash - 如何运行由另一个脚本生成的二进制文件列表?

Linux bash - 如何运行由另一个脚本生成的二进制文件列表?

我有一个脚本,可以生成要执行的二进制文件列表:

\home\joe\bin\script1
\home\joe\bin\script2
\home\joe\bin\script3
..

问题 1:如何从命令行逐个运行所有这些文件?一种方法是将二进制文件列表复制到临时文件temp.sh并运行该.sh文件。是否可以在不创建临时.sh文件的情况下执行此操作?

问题 2:如何并行运行所有这些文件?

答案1

使用 GNU Parallel:

问题 1:

list_generator_program | parallel -j1

问题2:

list_generator_program | parallel

这将在每个 CPU 核心上并行运行一项作业。

答案2

我猜你例子中的反斜杠应该是斜线

yarl@nb$ pwd
/tmp
yarl@nb$ cat list  
#!/bin/sh

echo /tmp/foo
echo /tmp/bar
yarl@nb$ cat foo
#!/bin/sh

echo I say foo
sleep 2
echo I say foo
yarl@nb$ cat bar
#!/bin/sh

echo And I say bar
sleep 2
echo And I say bar
yarl@nb$ cat parallel 
#!/bin/sh

./list | while read cmd; do
$cmd &
done

跑步:

./list | sh

在平行下:

./parallel

请注意,如果“list”列出了 n 个文件,则这是并行运行的 n 个作业。如果您想控制它,请使用计数器或 gnu parallel 等。请参阅https://stackoverflow.com/questions/5547787/running-shell-script-in-parallel

相关内容