Shell
POSIX shell 中函式和變數的單獨命名空間
在 dash 中,函式和變數似乎存在於不同的命名空間中:
fn(){ fn="hello world" } fn; echo "The value is $fn!" #prints: The value is hello world! fn; echo "The value is $fn!" #prints: The value is hello world! #the fn variable doesn't conflict with the fn function
這是特定於破折號的功能還是 POSIX 保證?
保證:
2.9.5 功能定義命令
函式是使用者定義的名稱,用作簡單命令以呼叫具有新位置參數的複合命令。用“函式定義命令”定義函式。$$ … $$
該函式名為 fname;應用程序應確保它是一個名稱(參見 XBD 名稱)並且它不是一個特殊的內置實用程序的名稱。實現可以允許函式名中的其他字元作為副檔名。實現應為函式和變數維護單獨的名稱空間。