我有包含输入命令的 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
完成没有他们需要按回车键。这将结果限制为 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
。