Как сделать так, чтобы bash-скрипт продолжал часть цикла, только если на первом шаге цикла нет ошибок? - PullRequest
1 голос
/ 31 марта 2012

У меня в настоящее время есть файл .command для Mac, который содержит следующее:

for f in ~/Desktop/Uploads/*.flv
do
     /usr/local/bin/ffmpeg -i "$f" -vcodec copy -acodec libfaac -ab 128k -ar 48000 -async 1 "${f%.*}".mp4
     rmtrash "$f"
done

Как я могу сказать bash, что запускать rmtrash можно только в том случае, если ffmpeg не выдает ошибку?

1 Ответ

5 голосов
/ 31 марта 2012

Проверьте возвращаемое значение команды ffmpeg, используя $? или поместите && между 2 командами, подобными этим:

for f in ~/Desktop/Uploads/*.flv
do
     /usr/local/bin/ffmpeg -i "$f" -vcodec copy -acodec libfaac -ab 128k\
     -ar 48000 -async 1 "${f%.*}".mp4 && rmtrash "$f"
done

Согласно руководству по bash:

command1 && command2
   command2 is executed if, and only if, command1 returns an exit status of zero.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...