2017-10-04 25 views
1

我不小心在我的一個腳本中寫下了下一個任務: $X=$(echo 'astring')=astring: command not found失敗。 正確的和預期的作業是X=$(echo 'astring'),其工作和設置X='astring'。 問題是第一個會發生什麼? $是否試圖執行右側的結果?如果是這樣,那麼爲什麼它也納入=呢?我很困惑。爲什麼在左手側arg上展開導致錯誤

+0

你是否理解'echo X'和'echo $ X'之間的區別?同樣的東西就在這裏。 – Mat

回答

2

$X=$(echo 'astring')的行爲取決於$X的內容。當它是空的(它有可能是),它擴展爲一個空字符串,剩下的字符串被解釋爲一個命令

$X=$(echo 'astring') 
    =astring 

如果$X包含的東西,如「ASTRING」,字符串擴展到

astring=astring 

但它不設置像一些人認爲的$astring變量,因爲擴展的順序。任何擴展發生之前,都會識別分配。所以,它又被解釋爲一個命令

astring=astring: command not found 
相關問題