我感到困惑的是什麼錯誤代碼執行變量賦值明明與命令替換命令將返回:擊:變量賦值的退出代碼,命令替換
a=$(false); echo $?
它輸出1
,這讓我覺得該變量賦值不會在最後一次掃描或產生新的錯誤代碼。但是,當我嘗試這樣做:
false; a=""; echo $?
它輸出0
,顯然這是什麼a=""
回報,它會覆蓋false
返回1
。
我想知道爲什麼發生這種情況,變量賦值中是否有任何特殊性與其他常規命令不同?或者只是因爲a=$(false)
被認爲是一個單一的命令,只有命令替換部分是有意義的?
- 更新 -
謝謝大家,從答案和意見,我得到了點。「當你使用命令替換爲變量賦值,退出狀態是命令的狀態」 (by @Barmar),這個解釋非常清晰易懂,但對於程序員來說講話不夠精確,我想從TLDP或GNU man page等權威機構那裏看到這一點的參考,請幫我找到它出來,再次感謝!
TLDP不是權威來源--ABS完全是臭名昭着的,因爲它展示了bash中的不好實踐,就像w3schools在JavaScript世界中一樣。 –