我基本上有10个左右的C ++文件,这些文件是通过命令行运行的。我最近制作了一个bash文件,该文件带有参数并运行所有C ++文件。它可能是一个最基本的sh命令。话虽这么说,是否有可能使它们异步运行?这些脚本都不相互依赖,并且有大量的CPU和RAM可以一次运行所有脚本。
脚本
#!/bin/sh
echo "running script 1..."
./script1 $1 $2 $3 $4
echo "running script 2..."
./script2 $1 $2 $3 $4
echo "running script 3..."
./script3 $1 $2 $3 $4
答案 0 :(得分:2)
只需将&
放在您要作为背景的每个命令之后,然后选择wait
等待所有命令:
#!/bin/sh
echo "starting script 1..."
# "$@" is equivalent to "$1" "$2" "$3"...
./script1 "$@" &
echo "starting script 2..."
./script2 --misc-flag=foo "$@" &
echo "starting script 3..."
./script3 --foobar &
echo "Waiting for all scripts to finish"
wait
或者,如果所有脚本都以与示例中相同的标记被相同的方式调用,请使用循环:
#!/bin/sh
for script in ./script*
do
echo "Starting $script..."
"$script" "$@" &
done
echo "Waiting..."
wait