Как установить код выхода при выходе из 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

Об этом есть соответствующая статья.

Другие вопросы по тегам