ウェブサイト検索

Bashの「if -z」と「if -n」ステートメントを使用して文字列をテストする方法


「if」文は、他のプログラミング言語のようにBashで条件分岐に使用されます。「if」文を使用して、Bashで異なる条件をチェックできます。異なるタイプの比較演算子、論理演算子、およびオプションは、テストのために「if」文と一緒に使用されます。このチュートリアルでは、Bashで「if」文を使用して文字列値をテストするための「-z」と「-n」オプションの使用法を示します。

「If -Z」ステートメントの使用

時々、文字列変数が空であるか、長さがゼロの文字列を含んでいるかどうかを確認する必要があります。このタスクを実行するためのBashのオプションはいくつかあります。変数が空であるかどうかを確認する方法の一つとして、「if」文の「-z」オプションを使用することが挙げられます。「if -z」オプションの使用方法は、チュートリアルの次の部分で説明されています。

例1: 「[]」を使った「If -Z」ステートメントの確認

次のスクリプトを使用して、“if –z” 文が “[]” と共に示される Bash ファイルを作成します。ユーザーから 2 つの入力を受け取ります。どちらかの入力値が空である場合はエラーメッセージが表示されます。それ以外の場合、2 つの入力値の合計が計算され表示されます。

#!/bin/bash
#Read the first number
read -p "Enter the first number : " n1
#Read the second number
read -p "Enter the second number : " n2

#Check any input is empty or not
if [[ -z "$n1" || -z "$n2" ]]
then
    #Print the error message
    echo "The first or second number is empty."
else
    #Calculate the sum
    sum=$(($n1+$n2))
    #Print the summation value
    echo "The sum of $n1 and $n2 is $sum."
fi

出力:

スクリプトが引数なしで実行された場合、次の出力が表示されます:

スクリプトが1つの引数で実行されると、次の出力が表示されます:

スクリプトが2つの引数で実行されると、次の出力が表示されます:

例 2: 「テスト」コマンドを使った「もし-Z」ステートメントの確認

以下のスクリプトを使ったBashファイルを作成してください。ここでは「if -z」文を「test」コマンドと共に使用します。ユーザーからの入力は数値でなければなりません。入力値が空の場合、エラーメッセージが表示されます。入力値が非空ですが数値を含まない場合、別のエラーメッセージが表示されます。整数が入力された場合、入力値が表示されます。

#!/bin/bash
#Read the age value
read -p "Enter your age: " age

#Check whether the input value is empty or not
if test -z "$age" 
then
    #Print the error message for empty
    echo "The input value is empty."
    exit
fi

#Check whether the input value is a number or not 
if ! [[ $age =~ ^[0-9]+$ ]]; then
    #Print the error message for non-numeric data
    echo "The age value must be a number."
else
    #Print the input value
    echo "You are $age years old."
fi

出力:

スクリプトが数値入力値で実行されると、次の出力が表示されます:

スクリプトが文字列入力値で実行されると、次の出力が表示されます:

「If -N」ステートメントの使用

時々、文字列変数が空でないか、または文字列の値がゼロ以上の長さを持っているかを確認する必要があります。このタスクを実行するためのBashのオプションは多数あります。「if」ステートメントと一緒に「-n」オプションを使用することは、変数が空でないかどうかを確認する方法の一つです。「if -n」オプションの使用例は、チュートリアルの次の部分で示されています。

例1: 「[]」を使った「If -N」ステートメントの確認

次のスクリプトを持つBashファイルを作成します。このスクリプトでは「if -n」ステートメントと「[]」の使用が示されます。1つの入力値がユーザーから取得されます。入力値が空の場合、エラーメッセージが表示されます。それ以外の場合、入力値が表示されます。

#!/bin/bash
#Read the book name
read -p "Enter the book name: " book

#Check if the input is non-zero or not
if ! [ -n "$book" ]
then
    #Print the error message
    echo "Book name can't be empty."
else
    #Print the input value
    echo "The book name is $book."
fi

出力:

スクリプトが任意の入力値で実行されると、次の出力が表示されます:

スクリプトが文字列入力値で実行されると、次の出力が表示されます:

例 2: “Test” コマンドを使った “If -N” ステートメントの確認

次のスクリプトを使用して Bash ファイルを作成します。ここでは、「test」コマンドと「if -n」ステートメントの使用例が示されています。最初の入力は文字列で、2 番目の入力は数値です。両方の入力値が空でない場合、エラーメッセージが表示されます。第2の入力値が数値でない場合は、そうでなければ入力値が表示されます。

#!/bin/bash
#Read the book name
read -p "Enter the book name: " book

#Read the book name
read -p "Enter the book price: " price

#Check whether the input is non-zero or not
if test -n "$book" && test -n "$price" 
then
   #Check whether the input value is a number or not 
   if ! [[ $price =~ ^[0-9]+$ ]]; then
       #Print the error message for non-numeric data
       echo "The price value must be a number."
   else
       #Print the input values
       echo "Book name is $book."
       echo "Book price is $price."
   fi
else
   #Print the error message
   echo "Book name or price can't be empty."
fi

出力:

スクリプトが2つの空の入力値で実行されると、以下の出力が表示されます:

スクリプトが空の入力値で実行されると、次の出力が表示されます:

スクリプトが2つの非空の有効な入力値で実行されると、次の出力が表示されます:

スクリプトが2つの非空値と無効な価格値で実行されると、次の出力が表示されます:

結論

このチュートリアルでは、複数の例を使って「if -z」と「if -n」の両方のステートメントの使い方が説明されており、Bashユーザーがこれらのステートメントをスクリプトに適切に適用できるように支援しています。