Как сказанный BЈовић, в целом, каждый файл имеет свой собственный заголовок. Попробуйте этим примером из Ubuntu Как To:
mencoder -ovc copy -oac copy video1.avi video2.avi -o completevideos.avi
Необходимо смочь сделать это в той же оболочке, которую Вы хорошо знаете wait
команда:
$ sleep 30 &
[1] 17440
$ wait 17440 && echo hi
...30 seconds later...
[1]+ Done sleep 30
hi
выборка из страницы справочника Bash
wait [n ...]
Wait for each specified process and return its termination status. Each n
may be a process ID or a job specification; if a job spec is given, all
processes in that job's pipeline are waited for. If n is not given, all
currently active child processes are waited for, and the return status is
zero. If n specifies a non-existent process or job, the return status is
127. Otherwise, the return status is the exit status of the last process
or job waited for.
fg
возвраты с кодом выхода из программы это возобновляется. Можно поэтому приостановить программу с ^Z и затем использовать fg && ...
возобновлять его.
$ /bin/myprog
some output...
^Z
[1]+ Stopped /bin/myprog
$ fg && /usr/bin/mycleanup
myprog
по причинам второго раза fg
завершаться с кодом выхода 20 - который является ненулевым, таким образом, цепочечное mycleanup
команда не выполняется.
– n.st
04.01.2014, 06:00
Не уверенный, если то, что Вы просите, возможно, но если у Вас все еще есть оболочка, Вы запустили программу от, можно всегда проверять $?
для статуса выхода последнего процесса:
$ /bin/myprog
some output...
$ if [ $? -ne 0 ];then echo "non-zero exit status";else echo "0 exit status";fi
Если бы задание находится на переднем плане, любая из этих команд имела бы то же поведение, как Вы ожидаете.
[ $? -eq 0 ] && prog2
(( $? )) || prog2
Примечание: $? будет содержать статус возврата под управлением программы, когда это выйдет.
Это явно указывает, что оболочка сделала бы при исходном вводе команды.
prog1 && prog2
Если первая команда не читает из stdin
и работает на переднем плане, новая команда может быть введена, в то время как первая команда работает. Оболочка считает и выполнит его, когда первая команда выполнится. Если команда будет работать в фоновом режиме, маловероятно, что это читает stdin
.
Править: Помещение задания в фоновом режиме и использование WAIT
команда могла также использоваться. Это должно быть сделано с осторожностью, если другие задания были также выполнены в фоновом режиме. Спецификация задания требуется, чтобы иметь WAIT
управляйте возвращаются, состояние задания ожидало на.
wait
не идеально также. Преимущество, IMO, состоит в том, что это дает нам более ясный API, с которым мы имеем дело. Ввод большего количества команд на командной строке после того, как что-то работает, казался небольшим hacky мне. wait
все еще страдает от не получения прямой ссылки на рабочий PID, wrt статус возврата. Это, кажется, проблема больше w/, как Bash реализует вещи хотя: stackoverflow.com/questions/356100 / …. Таким образом, это могло бы быть столь хорошо, как это добирается.
– slm♦
11.11.2013, 21:43
%
,%1
и$!
. Важно предоставить PID, или вторая команда будет всегда работать. – BillThor 13.11.2013, 03:06wait
не обеспечит желаемый результат. Распространено использовать краткие формы, поскольку они менее подвержены опечаткам. – BillThor 13.11.2013, 03:18