读取命令(输入)的最大字符长度

读取命令(输入)的最大字符长度

我有包含输入命令的 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.

但这里有一个问题。如果用户键入abcderead完成没有他们需要按回车键。这将结果限制为 5 个字符,但可能不会带来良好的用户体验。人们是用过的按回车键。

第二种方法只是测试输入的长度,如果太长则抱怨。我们使用的事实${#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

相关内容