我正在寻找一种方法来并行运行一个函数,并确切地知道所有函数示例何时完成。我添加了一个微调器(函数的示例运行不同的时间,取决于变量,所以我需要在屏幕上看到一些东西),并尝试了以下方法:
for a in "${ARRAY[@]}"; do
spin='/-\|'
while true; do
i=$(( (i+1) %4 )); printf "\r[ ${spin:$i:1} ] "; sleep .3;
done & someFunction &
kill $!; trap 'kill $!' SIGTERM
done
字符串
但是someFunction
不工作。我认为这是因为如果它作为someFunction &
被触发,它会立即被下一行代码杀死。而且在脚本结束后,微调器会在CLI上永远工作。
什么是同时运行someFunction
的方法,直到最后一个instace完成,并保留微调器直到那时?
1条答案
按热度按时间kyks70gy1#
您需要跟踪已分叉的进程,然后为它们使用
wait
。(而不是一个接一个)或仅用于特定作业。参见man bash
,下面的脚本启动一个微调器,每秒打印一些东西,然后派生出5个进程,这些进程休眠不同的时间。字符串