LinuxのBashシェルスクリプトでは、変数が定義されているかどうかを確認する方法を紹介します。
いくつかの変数にアクセスするとき、その変数が定義されていなくて ""
が出力されるのか、実際の値が ""
で割り当てられたかどうかを区別ならないことがありますが。
このようなときに変数が定義されていることを確認して知ることができます。
Syntax
変数が定義されているかどうかを確認するテスト演算子は -v
と-z
です。
[[ -v Variable_Name ]]
[[ -z Variable_Name ]]
-v
:変数が定義されているときにTrue、そうでなければFalseリターン-z
:変数が定義されているときにFalse、そうでなければ、Trueリターン
1. -v
で変数定義を確認する
次のように -v
演算子で変数が定義されているかどうかを確認することができます。
#!/bin/bash
VAR="variable"
if [[ -v VAR ]];
then
echo "VAR is set"
else
echo "VAR is not set"
fi
if [[ -v VAR2 ]];
then
echo "VAR2 is set"
else
echo "VAR2 is not set"
fi
Output:
$ bash example.sh
VAR is set
VAR2 is not set
2. -z
で変数定義を確認する
次のように -z
に変数が定義されているかどうかを確認することができます。ファイルが存在するとき、 -v
と戻り値が反対ということに注意をください。
#!/bin/bash
VAR="variable"
if [[ -z ${VAR} ]];
then
echo "VAR is not set"
else
echo "VAR is set"
fi
if [[ -z ${VAR2} ]];
then
echo "VAR2 not is set"
else
echo "VAR2 is set"
fi
Output:
$ bash example.sh
VAR is set
VAR2 is not set
3. unsetで変数定義が削除されることを確認する
unsetは宣言された変数を削除するコマンドです。
たとえば、次の例ではVARは定義されて -v
にチェックしてみると設定されてきます。その変数に対してunsetをして、再度チェックしてみるとVARは定義されていないと返されます。
#!/bin/bash
VAR="variable"
if [[ -v VAR ]];
then
echo "VAR is set"
else
echo "VAR is not set"
fi
unset VAR
if [[ -v VAR ]];
then
echo "VAR is set"
else
echo "VAR is not set"
fi
Output:
$ bash example.sh
VAR is set
VAR is not set
References
Related Posts
- Bash Shell - 文字列の出力方法(echo, printf)
- Bash Shell - 数値比較演算子
- Bash Shell - 変数が定義されているかどうかを確認する方法
- Bash Shell - スリープ関数、特定の時間を停止する
- Bash Shell - 文字列 切り出し(substring、split)
- Bash Shell - 日付、時刻を取得する
- Bash Shell - 文字列を連結する方法
- Bash Shell - ファイルの生成と文字列の追加
- Bash Shell - 文字列比較、文字列が含まれているかどうかを確認する
- Bash Shell - 条件文(if-else)
- Bash Shell - 数値演算(プラス、マイナス、乗算、除算)