【发布时间】:2021-11-19 13:23:27
【问题描述】:
在我的 bash 脚本中,我运行了一个激活脚本的命令。我在 for 循环中多次重复此命令,因此希望等到脚本完成后再运行它。我的bash脚本如下
for k in $(seq 1 5)
do
sed_param='s/mu = .*/mu = '${mu}';/'
sed -i "$sed_param" brusselator.c
make brusselator.tst &
done
据我所知,最后的 & 让脚本知道要等到命令完成,但这不起作用。还有其他方法吗?
此外,有时命令可能需要很长时间,在这种情况下,我最多希望等待 5 秒。但如果命令提前完成,我不想等待 5 秒。有什么方法可以实现吗?
【问题讨论】:
-
'据我所知,最后的 & 让脚本知道等到命令完成' 不;它恰恰相反。等待命令完成是默认设置,所以不要使用
&。 -
要在一段时间后杀死某些东西,您可以查看
timeout命令。 -
至于超时:the
timeoutcommand怎么样? -
这个循环似乎没有意义,
$mu是否在某处被修改?实际上,这是运行完全相同的命令 5 次,而 sed 实际上不会做任何事情。 -
@BenjaminW。我有更多循环,所以 $mu 在另一个循环中被修改,但对于这个例子,我只复制了内部循环;)
标签: bash