我有一个for
像这样的 bash 循环:
for file in *.mp4; do
command1 "${file}" && command2 "${file}"
done
这使得只要成功command2
就可以运行,这是预期的。command1
现在我想要的是循环只等待command1
完成, 但无需等待command2
在迭代之前完成。有没有办法做到这一点?
我尝试过但没有成功:
command1 && command2 &
- 不等待command1
退出,并行运行command1 && ( command2 & )
- 等待command2
退出,无需
答案1
有点详细,但这应该有效:
for file in *.mp4; do
if command1 "${file}"; then
command2 "${file}" &
fi
done
答案2
我喜欢@muru的回答并接受它作为主要答案。
还找到了类似的方法,我将其发布在这里作为替代方法:
for file in *.mp4; do
command1 "${file}"
[ "${?}" -eq 0 ] && command2 "${file}" &
done