入力コマンドを含むbashスクリプトがあります。
echo "Enter the id: "
read id
forに入力できる文字を制限する方法があるかどうか疑問に思いますid
。私の言葉は、彼が5文字しか入力できないことを意味しますid
。
それは可能ですか?
ありがとうございます。
ベストアンサー1
したがって、bash
(少なくとも)2つのオプションがあります。
最初はですread -n 5
。これがあなたのニーズを満たすことができるようです。マニュアルページから
-n nchars
read returns after reading nchars characters rather than
waiting for a complete line of input, but honor a delim-
iter if fewer than nchars characters are read before the
delimiter.
しかし、問題があります。ユーザーが入力abcde
するとread
完了いいえEnterキーを押す必要があります。これは結果を5文字に制限しますが、良いユーザーエクスペリエンスを提供できない可能性があります。人々は使用されるEnter キーを押します。
2番目の方法は入力長をテストし、長すぎると文句を言います。私たちが使用する事実は${#id}
文字列の長さです。
その結果、非常に標準的なループが生成されます。
ok=0
while [ $ok = 0 ]
do
echo "Enter the id: "
read id
if [ ${#id} -gt 5 ]
then
echo Too long - 5 characters max
else
ok=1
fi
done
欲しいなら正確に5文字以降はif
テストをからに変更-gt
できます-eq
。