為空 判斷 如何判斷環境變數為空

2021-10-14 22:00:16 字數 2052 閱讀 8008

今天在看 spark 的指令碼的時候,發現很多變數都有用到這種格式,如下:

...

......

&& if ! [ -z $ ]; then spark_classpath="$spark_mounted_classpath:$spark_classpath"; fi

......

...

-z很容易理解,在 shell 指令碼裡就是表示後面這個變數是否為空,也做zero的意思。那後面的+x呢?

以下例子是先定義了variable變數為空,然後判斷為空的時候輸出需要設定環境變數,不為空則列印變數值。

variable=

if ! [ -z $ ]; then

echo "$ was defined"

else

echo "need to set environment var $variable" && exit 1;

fi

顯示結果如下。結果判斷是正確的。

➜  /tmp cat x.sh

variable=

if ! [ -z $ ]; then

echo "$ was defined"

else

echo "need to set environment var $variable" && exit 1;

fi➜ /tmp ./x.sh

need to set environment var

然後對指令碼略加修改,也就是$。執行後發現,結果有點詭異,明明變數是空的,為什麼會報告說變數定義了呢?

➜  /tmp cat x.sh

variable=

if ! [ -z $ ]; then

echo "$ was defined"

else

echo "need to set environment var $variable" && exit 1;

fi➜ /tmp ./x.sh

was defined

關於以上的區別,我在 stackoverflow 上找到關鍵的參考資訊。

從上面的回答中可以找到相關的文件。

我大概解釋一下,$這種稱為 parameter expansion,這個變數的含義是,如果variable是 unset 或者空的,則會用x來替換這個值,最後再用剛剛的例子測試一下。

➜  /tmp cat x.sh

variable=

if ! [ -z $ ]; then

echo "$ was defined"

else

echo "need to set environment var $variable" && exit 1;

fi➜ /tmp ./x.sh

x was defined

可以看到variable為空值null,所以會用x來替換$=x,所以最終會輸出x的值。

PHP如何判斷變數為空?

php如何判斷變數為空?這看似很簡單的問題,其實不小心就很容易出錯!一般我們判斷變數為空常用的函式如下 empty var 檢查乙個變數是否為空。如果 var 是非空或非零的值,則empty 返回false。換句話說,0 0 null false array var var 以及沒有任何屬性的物件都...

PHP判斷變數為空

1 isset 功能 判斷變數是否被初始化 2 empty 功能 檢測變數是否為 空 3 var null 功能 判斷變數是否為 空 4 var null 功能 檢測變數是否為 null 同時變數的型別也必須是 null 5 is null 功能 檢測變數是否為 null 測試結果 值isset e...

js判斷為空

下面就是有關判斷為空的簡寫方法。如下 if variable1 null variable1 undefined variable1 上面的意思是說如果variable1不是乙個空物件,或者未定義,或者不等於空字串,那麼宣告乙個variable2變數,將variable1賦給variable2。也就...