Как сделать неудачную командную подстановку, когда она находится в переменной окружения - PullRequest
0 голосов
/ 15 марта 2020

Этот код работает должным образом

set -e
a="$(exit 1)"
echo hi

Ничего не печатается.

Но если подстановка команды происходит в переменной окружения

set -e
a="$(exit 1)" echo hi

Тогда bash не выходит рано и hi выводится на печать.

Я знаю, что могу заставить его работать, выполнив

set -e
a="$(exit 1)"
a="$a" echo hi

Есть флаг или что-то, из-за чего bash напрямую выходит из строя без мне нужно переписать мой код?

1 Ответ

0 голосов
/ 16 марта 2020
:=>cat temp.ksh
set -e
a="$(exit 1)" && echo hi
:=>./temp.ksh
:=>cat temp_1.ksh
set -e
a="$(exit 0)" && echo hi
:=>./temp_1.ksh
hi
:=>

Объяснение:

&& оператор используется для привязки команд. Он проверяет статус команды слева и выполняет команду справа в случае успеха.

...