シェルで変数の空チェック

シェルで変数の空チェック

シェルスクリプトで変数が空かどうかをチェックする方法はいくつかあります。
以下に、Bashシェルを例にとって説明します。

空チェックの基本的な方法

1. 変数が未設定または空であるかをチェック

  • z オプションを使って、変数が空であるかどうかを確認します。
if [ -z "$VARIABLE" ]; then
  echo "変数は空です。"
else
  echo "変数には値が設定されています。"
fi
  • z は、変数の値が空である(長さが0)場合に真を返します。

変数が未設定の場合も空として扱われます。

2. 変数が空でないかをチェック

  • n オプションを使って、変数が空でないことを確認します。
if [ -n "$VARIABLE" ]; then
  echo "変数には値が設定されています。"
else
  echo "変数は空です。"
fi
  • n は、変数の値が空でない(長さが0でない)場合に真を返します。

変数が未設定の場合も空として扱われます。

3. 変数が設定されているかどうかをチェック

変数が設定されているが空である場合も含めてチェックするには、-v オプションを使います(Bash 4.2 以降)。

if [ -v VARIABLE ]; then
  echo "変数は設定されています。"
else
  echo "変数は設定されていません。"
fi

ただし、-v オプションは変数が空かどうかのチェックではなく、変数が設定されているかどうかのチェックです。
空かどうかのチェックには -z または -n を使う必要があります。

サンプルスクリプト

以下は、いくつかのチェック方法を組み合わせたサンプルスクリプトです。

#!/bin/bash

VARIABLE1=""
VARIABLE2="Some Value"

# 変数が空かどうかをチェック
if [ -z "$VARIABLE1" ]; then
  echo "VARIABLE1 は空です。"
else
  echo "VARIABLE1 には値が設定されています。"
fi

# 変数が空でないかをチェック
if [ -n "$VARIABLE2" ]; then
  echo "VARIABLE2 には値が設定されています。"
else
  echo "VARIABLE2 は空です。"
fi

# 変数が設定されているかをチェック
if [ -v VARIABLE1 ]; then
  echo "VARIABLE1 は設定されています。"
else
  echo "VARIABLE1 は設定されていません。"
fi

このスクリプトでは、空チェックのために -z と -n を使用し、変数が設定されているかを確認するために -v を使用しています。