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