Bash
如何確定bash變數是否為空?
確定 bash 中的變數是否為空(“”)的最佳方法是什麼?
我聽說建議我這樣做
if [ "x$variable" = "x" ]
這是正確的方法嗎?(必須有更直接的東西)
如果變數未設置或設置為空字元串 (""),這將返回 true。
if [ -z "${VAR}" ];
在 Bash 中,當您不關心不支持它的 shell 的可移植性時,您應該始終使用雙括號語法:
以下任何一項:
if [[ -z $variable ]] if [[ -z "$variable" ]] if [[ ! $variable ]] if [[ ! "$variable" ]]
在 Bash 中,使用雙方括號,引號不是必需的。您可以將包含值的變數的測試簡化為:
if [[ $variable ]]
此語法與 ksh 兼容(至少 ksh93,無論如何)。它不適用於純 POSIX 或更舊的 Bourne shell,例如 sh 或 dash。
有關雙方括號和單方括號之間差異的更多資訊,請參閱我的答案和BashFAQ/031 。
您可以測試以查看變數是否特別未設置(與空字元串不同):
if [[ -z ${variable+x} ]]
其中“x”是任意的。
如果您想知道變數是否為 null 但未設置:
if [[ -z $variable && ${variable+x} ]]