データ入力用のシェルスクリプトがあります。ファイルを生成し、さらにステートメントを生成するさまざまなデータ入力の場合も同様です。次のセクションがありますが、入力した値は130、1300、13500などの数字でなければなりませんが、数字だけがあることを確認したいと思います。現在私はこれをしています:
echo -e "Enter loan amount :\c"
read amount
case $amount in
[0-9]) echo $amount >>manual-entry ;;
*)echo " Entered value is not number" ;;
esac
これにより、1つの数字のみを入力できます。私の入力値は1から99999999999の間です。この問題をどのように解決できますか?
答え1
これもできます
typeset -i amount
read -rp 'Enter loan amount: ' amount
[[ "$amount" == 0 ]] && echo "enter a positive integer"
echo $amount >>manual-entry
浮動小数点数を入力するとエラーが発生します。文字列を入力すると、金額はゼロに設定されます。
答え2
シェルテストを使用して、独自の整数比較を実行できます。
read -rp 'Enter loan amount: ' amount
if [ "${amount:-0}" -eq "${amount:-1}" 2>/dev/null ]; then
echo "$amount" >> manual-entry
else
echo "Invalid input, number is expected" >&2
fi
入力時に${amount:-0}
これがまだ失敗することを確認するために比較を行っています。それ以外の場合、演算子は整数ではなく比較に対してエラーを犯します。入力が整数の場合は通過します。${amount:-1}
null
-eq
注:これは浮動小数点をサポートしません。