Как установить код выхода при выходе из bash?
Я хочу запустить команду из под-bash, и мне нужен код возврата из нее; на самом деле он запускает конвейер, и мне нужен массив PIPESTATUS или хотя бы один компонент.
Это было мое лучшее предположение, и оно не работает. Я просто получаю 0. Поскольку bash не выдает ошибок, это имеет смысл, это не то, что мне нужно. Помогите?
bash -c "echo 123 | grep abc | sort; exit ${PIPESTATUS[1]}"; echo $?
0
1 ответ
Решение
Попробуйте использовать одинарные кавычки:
bash -c 'echo 123 | grep abc | sort; exit ${PIPESTATUS[1]}'; echo $?
Примеры прогонов:
bash -c 'echo 123 | grep abc | sort; exit ${PIPESTATUS[1]}'; echo $?
1
bash -c 'echo 123 | grep abc | sort; echo status is ${PIPESTATUS[@]}'; echo $?
status is 0 1 0
0
Об этом есть соответствующая статья.