我是 bash 的新手,剛遇到
local name=; name = $("something", "something")
有人可以解釋一下嗎=; 方法?
我試圖用谷歌搜索它,但找不到任何解釋。
uj5u.com熱心網友回復:
你知道那;是命令分隔符嗎?
這里也一樣。與其將這兩個命令寫在一行上,不如將其分成兩行:
local name=
name=$("something", "something")
uj5u.com熱心網友回復:
local name=; ...
定義一個名為的區域變數(即只有函式知道)并將name其設定為空字串。此代碼段中的賦值是多余的,因為新變數總是分配有空字串。
....; name = $("something", "something")
呼叫名為的命令name并向其傳遞幾個引數。第一個引數是等號。沒有特殊含義=。但請注意,我們還有:
name=$("something", "something")
執行子行程,運行something帶有引數something的命令,并將執行的標準輸出分配給變數name;和:
name=something1 something2
這意味著執行something2在環境中命名的命令,其中環境變數name設定為something1。在呼叫程序中,name不改變它的值。所以,
name=1
name=2 printenv name
echo $name
會列印
2
1
uj5u.com熱心網友回復:
=;沒有任何意義。它是一個=后跟一個;。
分號 ( ;) 是命令分隔符。換行符做同樣的事情。
您的代碼等效于:
local name=
name=...
local在函式中宣告一個區域變數。第一條陳述句宣告了區域變數name并沒有初始化它。local name沒有任何初始化也會產生同樣的效果。
評論
在問題中,第二個陳述在=符號周圍有空格。
空格是單詞分隔符。對于空格,該行不是賦值,而是name使用兩個引數呼叫命令:=符號和包含在$(和中的命令的輸出)。
作業周圍不應有空格=。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/536850.html
標籤:狂欢
