в bash, если я выполняю пару команд, соединенных вместе внутри обратных циклов, как я могу узнать статус выхода первой команды?
то есть. в этом случае я пытаюсь получить "1". который я могу получить через PIPESTATUS [0], если я не использую backticks, но который, похоже, не работает, когда я хочу сохранить вывод:
## PIPESTATUS[0] works to give me the exit status of 'false':
$ false | true;
$ echo $? ${PIPESTATUS[0]} ${PIPESTATUS[1]};
0 1 0
## doesn't work:
$ a=`false | true`;
$ echo $? ${PIPESTATUS[0]} ${PIPESTATUS[1]};
0 0
В более общем плане, я пытаюсь выполнить: сохранить последнюю строку вывода какой-либо программы в переменной, но иметь возможность определить, не сработала ли программа:
$ myvar=` ./someprogram | tail -1 `;
$ if [ "what do i put here" ]; then echo "program failed!"; fi
В идеале я также хотел бы понять, что происходит, а не только то, что ответ.
Спасибо.