1
我不小心在我的一個腳本中寫下了下一個任務: $X=$(echo 'astring')
與=astring: command not found
失敗。 正確的和預期的作業是X=$(echo 'astring')
,其工作和設置X='astring'
。 問題是第一個會發生什麼? $
是否試圖執行右側的結果?如果是這樣,那麼爲什麼它也納入=
呢?我很困惑。爲什麼在左手側arg上展開導致錯誤
我不小心在我的一個腳本中寫下了下一個任務: $X=$(echo 'astring')
與=astring: command not found
失敗。 正確的和預期的作業是X=$(echo 'astring')
,其工作和設置X='astring'
。 問題是第一個會發生什麼? $
是否試圖執行右側的結果?如果是這樣,那麼爲什麼它也納入=
呢?我很困惑。爲什麼在左手側arg上展開導致錯誤
$X=$(echo 'astring')
的行爲取決於$X
的內容。當它是空的(它有可能是),它擴展爲一個空字符串,剩下的字符串被解釋爲一個命令
$X=$(echo 'astring')
=astring
如果$X
包含的東西,如「ASTRING」,字符串擴展到
astring=astring
但它不設置像一些人認爲的$astring
變量,因爲擴展的順序。任何擴展發生之前,都會識別分配。所以,它又被解釋爲一個命令
astring=astring: command not found
你是否理解'echo X'和'echo $ X'之間的區別?同樣的東西就在這裏。 – Mat