읽기 명령의 최대 문자 길이(입력)

읽기 명령의 최대 문자 길이(입력)

입력 명령이 포함된 bash 스크립트가 있습니다.

echo "Enter the id: " 
read id

for 에 입력할 수 있는 문자를 제한하는 방법이 있는지 궁금합니다 id. 제 말은 그가 5 글자만 입력할 수 있다는 뜻입니다 id.

그게 가능합니까?

감사해요.

답변1

따라서 bash(적어도) 두 가지 옵션이 있습니다.

첫 번째는 입니다 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 키를 누릅니다.

두 번째 방법은 입력 길이를 테스트하고 너무 길면 불평합니다. 우리가 사용하는 사실은 ${#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.

관련 정보