Я смущен тем, какой код ошибки возвращает команда при выполнении задания переменной и с заменой команды:
a=$(false); echo $?
Он выводит 1
, что позволяет мне думать, что присвоение переменной не подметает или не создает новый код ошибки на последнем. Но когда я пробовал это:
false; a=""; echo $?
Он выводит 0
, очевидно, это то, что возвращает a=""
, и переопределяет 1
, возвращаемый false
.
Я хочу знать, почему это происходит, есть ли какая-то особенность в присваивании переменных, которая отличается от других обычных команд? Или просто быть причиной a=$(false)
считается одной командой и имеет смысл только часть замещения команды?
- ОБНОВЛЕНИЕ -
Спасибо всем, из ответов и комментариев я получил точку "Когда вы назначаете переменную с помощью подстановки команд, статус выхода - это статус команды". (by @Barmar), это объяснение превосходно понятно и легко понять, но говорить недостаточно точно для программистов, я хочу видеть ссылку на этот вопрос у таких органов, как TLDP или справочная страница GNU, пожалуйста, помогите мне найти ее, снова спасибо!