다음과 같은 bash 루프 가 있습니다 for
.
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