読み取りコマンドの最大文字長(入力)

読み取りコマンドの最大文字長(入力)

入力コマンドを含む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

おすすめ記事