免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 5342 | 回复: 8

在shell里如何限制输入的长度?  关闭 [复制链接]

论坛徽章:
0
发表于 2002-09-11 13:33 |显示全部楼层
举个例子,比如用户输入用户名时只能给他输入8个字符,如果超过了8个字符光标就停止在第八个字符那儿,不继续,一直等待回车

论坛徽章:
8
白羊座
日期:2015-01-21 18:35:03巳蛇
日期:2015-02-03 17:30:37处女座
日期:2015-02-03 17:31:02羊年新春福章
日期:2015-02-03 17:31:21巨蟹座
日期:2015-02-05 16:01:06申猴
日期:2015-02-05 16:01:31摩羯座
日期:2015-02-05 16:01:41酉鸡
日期:2015-02-05 16:02:37
发表于 2002-09-11 13:57 |显示全部楼层

在shell里如何限制输入的长度?

只怕要自己来另写一个SHELL了。

论坛徽章:
0
发表于 2002-09-11 17:54 |显示全部楼层

在shell里如何限制输入的长度?

我现在可以实现到如果输入超出的话光标就停在最后一个字符,但是对于那些输入小于规定位数的那些就没折了,举个例子,比如用户域最长不能超过8位,我输入了6位然后回车,就不会结束,一定要输入完8位按回车才可以结束

论坛徽章:
0
发表于 2002-09-11 21:39 |显示全部楼层

在shell里如何限制输入的长度?

帖出来 看看 !

论坛徽章:
0
发表于 2002-09-12 09:06 |显示全部楼层

在shell里如何限制输入的长度?

[这个贴子最后由lvgq2001在 2002/10/09 05:10pm 编辑]

我这里有一个,应该能满足你的要求   
文件名: input.sh 用法:input.sh 限制的长度
例:input.sh 8 即限制输入8位。
#!/bin/ksh
# Program Name : input.sh
# Programmer   : 吕永辉(湖北省仙桃市信用联社)
trap '' 1 2 3 5 7 9 15 13
getcon(){
stty raw -echo
conchar=`dd if=/dev/tty bs=1 count=1 2>/dev/null`
stty sane
echo "$conchar"
}
while
     i=0&#59;clear >/dev/tty
     echo "\033[12&#59;15H请输入口令[`printf "%$1s" ' '`]" > /dev/tty
     echo "\033[12&#59;26H\c" > /dev/tty
     while
      [ "$i" = "$1" ] && break
      p=`getcon`
      [ &quot;$p&quot; = &quot;^[&quot; ] &amp;&amp; break   # 此处的^[用<ctrl>+<v>和<esc>输入
      [ &quot;$p&quot; = &quot;^M&quot; ] &amp;&amp; break   # 此处的^M用<ctrl>+<v>和<ctrl>+<M>输入
      PASS=`echo $PASS$p`
      echo &quot;\033[12&#59;`expr 26 + $i`H*\c&quot; > /dev/tty
     do
      i=`expr $i + 1`
     done
do
     [ &quot;$p&quot; = &quot;^[&quot; ] &amp;&amp; {        # 此处的^[用<ctrl>+<v>和<esc>输入
        clear&#59;break
                }
     echo &quot;\n你的输入为PASS&quot;&#59;break
     PASS=''
done
[说明]在输入中敲<Esc>键即可中止输入退出程序。
这仅仅是一个例子,你还可以根据自己的需要调整,也可以把它做成一个函数放在
自己的shell中。
(在SCO OpenServer 5.0.5中测试通过。)

论坛徽章:
0
发表于 2002-09-12 09:12 |显示全部楼层

在shell里如何限制输入的长度?

#!/bin/sh
mgets()
{
        SAVEDSTTY=`stty -g`
#       stty -echo
        stty raw
        dd if=/dev/tty bs=1 count=8 2> /dev/null
        stty -raw
#       stty echo
        stty $SAVEDSTTY
}
clear
tput cup 1 1
echo &quot;user [        ]&quot;
tput cup 1 7
char=`mgets`
stty -echo
read x
stty echo
echo &quot;&quot;
echo &quot;input($char)&quot;
不过输入过快的话会超出

论坛徽章:
0
发表于 2002-09-17 14:58 |显示全部楼层

在shell里如何限制输入的长度?

我觉得这个很有用,顶一下!

论坛徽章:
0
发表于 2002-09-17 15:31 |显示全部楼层

在shell里如何限制输入的长度?

方法不错,呵呵:)

论坛徽章:
0
发表于 2002-10-04 00:31 |显示全部楼层

在shell里如何限制输入的长度?

用下面的程序试试。
#!/bin/sh

clear
while [ 1 ]
do
    tput cup 2 1
    echo &quotlease enter password:                   &quot;
    tput cup 2 23
    read Pass
    len=`expr length $Pass`
    if [ $len -ne 8 ]
    then
        tput cup 2 23
    else
        break
    fi
done
tput cup 3 23
echo &quot;The length of password is 8 bytes,Okay!&quot;
   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP