Bash で変数が設定されているかどうかをチェックする

Nilesh Katuwal 2023年1月30日
  1. Bash で -v を使用して変数が設定されているかどうかを確認する
  2. Bash で -z を使用して変数が設定されているかどうかを確認する
  3. Bash で Null 値を割り当てることにより、変数が設定されているかどうかを確認する
Bash で変数が設定されているかどうかをチェックする

最初に変数を定義し、それに値を与えて変数を設定する必要があります。

値は null にすることができますが、割り当てる必要があります。未設定変数と null 変数には違いがあります。

ほとんどの一般的なプログラミング言語とは異なり、Bash には変数が設定されているかどうかを判断するための組み込み関数がありません。それでも、そうする機能はあります。

Bash スクリプティングでは、-v var または -z $var オプションを if 条件付きコマンドの式として使用して、変数が設定されているかどうかを確認できます。

[[-v Name_Of_Variable]]
[[-z Name_Of_Variable]]

変数が設定されている場合、ブール式は True を返し、そうでない場合は False を返します。

Bash で -v を使用して変数が設定されているかどうかを確認する

ここで、-v Variable を使用して変数が設定されているかどうかを確認します。

値が 5 の変数 X を定義しましょう。変数が設定されている場合は、Variable 'X' is set. と返されます。

#!/bin/bash

X=5  
 
if [[ -v X ]];  
then  
echo "Variable 'X' is set."  
else  
echo "Variable 'X' is not set."  
fi  

出力:

Variable 'X' is set.

変数を定義して値を割り当てたので、期待どおりに機能しました。別の例を見てみましょう。

#!/bin/bash
     
if [[ -v Y ]];  
then  
echo "Variable 'Y' is set."  
else  
echo "Variable 'Y' is not set."  
fi 

出力:

Variable 'Y' is not set.

変数 Y を定義しなかったため、出力には変数 Y が設定されていないことが示されます。

Bash で -z を使用して変数が設定されているかどうかを確認する

ここで、-z Variable を使用して変数が設定されているかどうかを確認します。

値が 5 の変数 X を定義しましょう。変数が設定されている場合は、Variable 'X' is set. を返します。

#!/bin/bash
X=5  
 
if [[ -z ${X} ]];  
then  
echo "Variable 'X' is not set."  
else  
echo "Variable 'X' is set."  
fi  

ここで、最初の if 条件は False を返し、2 番目は True を返し、Variable 'X' is set. が表示されます。

出力:

Variable 'X' is set.

変数を定義して値を割り当てたため、期待どおりに機能しました。別の例を考えてみましょう。

#!/bin/bash

if [[ -z ${X} ]];  
then  
echo "Variable 'X' is not set."  
else  
echo "Variable 'X' is set."  
fi 

出力:

Variable 'X' is not set.

Bash で Null 値を割り当てることにより、変数が設定されているかどうかを確認する

ここで、-v Variable を使用して変数が設定されているかどうかを確認します。

null 値を持つ変数 XX として定義しましょう。もし変数が設定されていれば、Variable 'X' is set. と返されます。

#!/bin/bash

X=""     
if [[ -v X ]];  then  
   echo "Variable 'X' is set."  
else  
   echo "Variable 'X' is not set."  
fi 

出力:

Variable 'X' is set.

ご覧のとおり、変数に null 値が割り当てられている場合でも、チェック後に set として表示されます。

関連記事 - Bash Variable