Bash

如何確定bash變數是否為空?

  • September 2, 2021

確定 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} ]]

引用自:https://serverfault.com/questions/7503