Bashで変数が数値かどうかをテストする方法


  1. 正規表現を使用する方法:
    #!/bin/bash
    # テストする変数
    variable="42"
    # 正規表現を使用して数値かどうかをチェック
    if [[ $variable =~ ^[0-9]+$ ]]; then
    echo "変数は数値です"
    else
    echo "変数は数値ではありません"
    fi

この方法では、変数が0から9までの数字のみで構成されているかどうかをチェックします。正規表現^[0-9]+$は、文字列の先頭から末尾までが数字のみであることを表します。

  1. 文字列を数値として比較する方法:
    #!/bin/bash
    # テストする変数
    variable="42"
    # 変数を数値として比較し、エラーが発生しなければ数値とみなす
    if [ "$variable" -eq "$variable" ] 2>/dev/null; then
    echo "変数は数値です"
    else
    echo "変数は数値ではありません"
    fi

この方法では、変数を数値として比較し、エラーが発生しなければ数値とみなします。-eq演算子は等しいことを比較しますが、文字列を数値として比較する場合にはエラーが発生します。エラー出力を/dev/nullにリダイレクトすることで、エラーを無視します。

これらの方法を使用することで、Bashスクリプトで変数が数値かどうかをテストすることができます。適切な方法を選択し、スクリプトに組み込んでください。