Bash
如何分配一個長度為零的非空字元串
基於此,在我讀過的許多其他內容中,我的理解是,它
a=''
使a
null 和零長度。但是,那麼,如何創建一個長度為零的非空字元串呢?或者,沒有這樣的事情嗎?在某種程度上這是依賴於 shell 的,我正在使用 bash。
“空字元串”表示“零長度(空)字元串”。參見例如“空字元串”的 POSIX 定義。這意味著不存在非空零長度字元串之類的東西。
但是,有一個未設置的變數。
var='' unset uvar
var
現在,執行上述程式碼和uvar
執行上述程式碼之後有所不同。例如,${var-hello}
將擴展為空字元串 sincevar
is set,而${uvar-hello}
將擴展為hello
sinceuvar
is unset。同樣,${var+hello}
將擴展為hello
因為var
已設置,並且${uvar+hello}
將擴展為空字元串,因為uvar
未設置(請參閱標準參數擴展)在
bash
中,您還可以使用-v
測試來測試是否設置了變數:if [ -v variable ]; then echo variable is set fi
同樣,“設置但為空”的變數與“未設置”的變數不同。字元串(變數的內容)不能為空,並且長度不能為零。
在其他語言中,字元數組可能包含 nul 字節 (
\0
),這意味著您可能有一個數組以 nul 字節開始,然後包含一些文本(以另一個 nul 字節結尾)。當它被解釋為string時,該字元串的長度為零,但數組的內容不會為空。大多數 shell(除了
zsh
)不允許在變數中使用 nul 字節。