Bash
Bash 局部變數初始化
Bash如何初始化局部變數?以下命令是否總是做同樣的事情(在函式內部使用時)?
local foo local foo= local foo=""
local foo=""
並且local foo=
完全等價。在這兩種情況下,等號的右側都是空字元串。
local foo
並且local foo=
不同:local foo
設置為空字元串foo
時未local foo=
設置。foo
更準確地說,local foo
創建一個局部變數,並且該變數最初是未設置的。隨後foo=…
的賦值設置本地值,並且該賦值可以與local
語句組合。見證:bash-4.3$ demo () { local unset empty= echo "unset=\"${unset-(not set)}\" empty=\"${empty-(not set)}\"" } bash-4.3$ demo unset="(not set)" empty=""
這與 ksh 的行為相同(除了在 ksh 中您需要使用關鍵字
typeset
而不是local
)。另一方面,在 zsh 中,local foo
設置foo
為空字元串。