Bash

如何分配一個長度為零的非空字元串

  • June 12, 2019

基於,在我讀過的許多其他內容中,我的理解是,它a=''使anull 和零長度。但是,那麼,如何創建一個長度為零的非空字元串呢?或者,沒有這樣的事情嗎?在某種程度上這是依賴於 shell 的,我正在使用 bash。

“空字元串”表示“零長度(空)字元串”。參見例如“空字元串”的 POSIX 定義。這意味著不存在非空零長度字元串之類的東西。

但是,有一個設置的變數。

var=''
unset uvar

var現在,執行上述程式碼和uvar執行上述程式碼之後有所不同。例如,${var-hello}將擴展為空字元串 since varis set,而${uvar-hello}將擴展為hellosince uvaris 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 字節。

引用自:https://unix.stackexchange.com/questions/524485