允许读取只接受两个长度

时间:2011-01-21 20:39:35

标签: bash shell character

我正在尝试添加一个脚本我正在写输入的限制,用户只能输入9或10个字符,我这样设置它但是当我运行它时,它不能像我一样工作想要它。即使我只输了一个数字,我输入的所有内容都会返回10个字符。我的代码出了什么问题?

#!/bin/bash
#

echo "Please input numbers only"
read inputline
if read -n10 inputline
then
    echo "10 chars"
else
    if read -n9 inputline
    then
    echo "9 chars"
else
    echo "invalid input length"
fi

2 个答案:

答案 0 :(得分:3)

您的脚本要求输入三次。我假设以下内容更接近您的意图:

#!/bin/bash
read -p "Please input numbers only " inputline
len=${#inputline}
if (( len == 9 || len == 10 ))
then
    echo "$len chars"
else
    echo "invalid input length"
fi

-n的{​​{1}}选项将输入限制为指定的字符数,但接受该长度而不按Enter键。按Enter键可以输入更少的数量。我发现它对read很有用,但很少有用。

答案 1 :(得分:1)

使用偏移参数扩展将它们输入的内容截断为最多10个字符,如下所示:

$ num="123456789012"; echo ${num::10}
1234567890