(jp) =
数値は 0 ~ 9 桁の組み合わせです。Bash 変数はすべての値を文字列の形式で格納します。 格納された値が文字列形式であっても、格納された値が有効な数値であれば、すべての算術演算を実行できます。 ベスト プラクティスとして、算術演算を実行する前に変数の値を確認する必要があります。
数値は、整数、浮動小数点数、または「+ と -」記号を前に付けた正/負の数にすることができます。 このチュートリアルでは、変数にアルファベットではなく、数字、整数、および double または float 値のみが含まれていることを確認するいくつかの方法について説明しました。
等チルダ (=~) 演算子の使用
正規表現は、値が数値かどうかをすばやく簡単に確認する方法です。 Bash スクリプトでは、等しいチルダ (=~)
演算子は、値を正規表現と比較するために使用されます。 これは、bash if ステートメントで使用できます。
#!/usr/bin/env bash # 入力数値が整数かどうかをチェックするシェルスクリプト read -p “Please enter a number: ” VAR if [[ $VAR =~ ^[0-9]+$ ]]; then echo “$VAR is a number” else echo “$VAR is not a number” fi
#!/usr/bin/env bash # 入力数値が整数かどうかをチェックするシェルスクリプト 読んだ –p “番号を入力してください: “ VAR もしも [[ $VAR =~ ^[0–9]+$ ]]; それから エコー 「$VAR は数値です」 そうしないと エコー 「$VAR は数値ではありません」 フィ |
上記のスニペットをシェル スクリプトに記述して実行します。 初めて値番号を入力します。
First run
Please enter a number: 12 12 is a number
いくつかのアルファベットを指定してスクリプトを再度実行し、出力を確認します。
Second run
Please enter a number: 1a2b 12a is not a number
浮動小数点数かどうかをチェック
浮動小数点数は、小数部分 (浮動小数点数とも呼ばれます) を保持できる数値を表す整数型です。 名前が示すように、これらの数値は場所や時間によって異なる値を取ることができます。 浮動小数点数は通常、小数点を含む数値を表すために使用されます。 たとえば、1.0、0.6、および 10.26 はすべて浮動小数点数です。
浮動小数点数を有効な数値と見なす新しいシェル スクリプトを作成します。
#!/usr/bin/env bash # 入力数値が数値かどうかをチェックするシェルスクリプト # 整数または浮動小数点数 read -p “Please enter a number: ” VAR if [[ $VAR =~ ^[0-9]+([.][0-9]+)?$ ]]; then echo “$VAR is a number” else echo “$VAR is not a number” fi
#!/usr/bin/env bash # 入力数値が数値かどうかをチェックするシェルスクリプト # 整数または浮動小数点数を指定できます 読んだ –p “番号を入力してください: “ VAR もしも [[ $VAR =~ ^[0–9]+([.][0–9]+)?$ ]]; それから エコー 「$VAR は数値です」 そうしないと エコー 「$VAR は数値ではありません」 フィ |
いくつかの浮動小数点数を入力して、上記のスクリプトを実行します。 このスクリプトは、すべての浮動小数点数を有効な数値と見なします。
First run
Please enter a number: 12.10 12.10 is a number
Switch Case ステートメントの使用
一部のスクリプトには、case ステートメントが必要です。 これは、他のプログラミング言語の switch ステートメントに似ています。 case ステートメント オプションで正規表現を使用して、指定された入力が数値かどうかを確認することもできます。
#!/usr/bin/env bash # 入力された数値が数値かどうかをチェックするシェルスクリプト # switch case ステートメントを使用 read -p “Please enter a number: ” VAR case $VARin ”|*[!0-9]*) echo “$VAR は数値ではありません” ;; *) echo “$VAR は数字です” ;; エサック
#!/usr/bin/env bash # 入力数値が数値かどうかをチェックするシェルスクリプト # switch case ステートメントを使用 読んだ –p “番号を入力してください: “ VAR 場合 $VARin ”| |*[!0–9]*) エコー 「$VAR は数値ではありません」 ;; *) エコー 「$VAR は数値です」 ;; エサック |
上記のスクリプトを異なる入力で複数回実行し、結果を確認します。
First run
Please enter a number: 12 12 is a number
数値が含まれているかどうかを確認する +/-
標識
上記のメソッドでは、0 ~ 9 桁のみを含む整数値、10 進数として知られる値の小数も含む浮動小数点数をチェックしました。 場合によっては、数値が正または負になることもあります。 プレフィックスなしまたはプレフィックス付きの任意の番号 +
は正の数です。 との数 -
プレフィックスは負の数です。
正規表現を更新して、 +/-
その前に歌います。
#!/usr/bin/env bash # 入力数値が数値であるかどうかを確認するシェル スクリプト # 正または負の数値 read -p “Please enter a number: ” VAR if [[ $VAR =~ ^[+-]?[0-9]+$ ]]; then echo “$VAR is a number” else echo “$VAR is not a number” fi
#!/usr/bin/env bash # 入力数値が数値かどうかをチェックするシェルスクリプト # 正または負の数値を指定できます 読んだ –p “番号を入力してください: “ VAR もしも [[ $VAR =~ ^[+-]?[0–9]+$ ]]; それから エコー 「$VAR は数値です」 そうしないと エコー 「$VAR は数値ではありません」 フィ |
上記のスクリプトを異なる 2 つの入力で実行し、結果を確認します。
First run
Please enter a number: 12 12 is a numberSecond run
Please enter a number: -12 -12 is a numberThird run
Please enter a number: +12 +12 is a number
数値が正か負かを確認する
bash スクリプトで算術演算を実行するときは、入力値を確認する必要があります。 以下のシェル スクリプトは、入力数値が正の数値か負の数値かを確認するのに役立ちます。
#!/usr/bin/env bash # 入力数値が正の数値か負の数値かをチェックするシェル スクリプト read -p “Please enter a number: ” VAR ## 入力が有効な数値かどうかを確認 [[ $VAR =~ ^[+,-]?[0-9]+$ ]]; then ## 次の場合、入力が正数か負数かをチェックします [[ $VAR =~ ^[-][0-9]+$ ]]; then echo “$VAR は負の数です” else echo “$VAR は正の数です” fi else echo “$VAR は数値ではありません” fi
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
#!/usr/bin/env bash # 入力された数値が正しいかどうかを確認するシェル スクリプト # は正の数または負の数です 読んだ –p “番号を入力してください: “ VAR ## 入力が有効な数値かどうかを確認します もしも [[ $VAR =~ ^[+,–]?[0–9]+$ ]]; それから ## 入力が正数か負数かをチェック もしも [[ $VAR =~ ^[–][0–9]+$ ]]; それから エコー 「$VAR は負の数です」 そうしないと エコー 「$VAR は正の数です」 フィ そうしないと エコー 「$VAR は数値ではありません」 フィ |
上記のスクリプトを正と負の数で実行します。 次に、結果を確認します。
First run
Please enter a number: 12 12 is a positive numberSecond run
Please enter a number: -12 -12 is a negative numberThird run
Please enter a number: +12 +12 is a positive number
結論
数値は、0 から 9 までの数字の集まりです。任意の数値は、正または負の数値にすることができます。 数値は、整数または浮動小数点数にすることができます。 このチュートリアルは、bash スクリプトで指定された値が数値かどうかを確認するのに役立ちました。