• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    linux shell实现获取用户输入指定范围的单个字符的两种方法

    方法一:

    复制代码 代码如下:

    echo `echo {a..z}``echo {A..Z}` > /tmp/letterfile
    while read -p "please input a letter: " letter
    do
        ((`awk -v var="$letter" 'BEGIN{print length(var)}'` == 1)) grep -q $letter /tmp/tmpfile break
    done
    rm -f /tmp/letterfile
    echo "you input letter $letter "

    [root@station1 ~]# cat a.sh

    复制代码 代码如下:

    echo `echo {a..z}``echo {A..Z}` > /tmp/letterfile
    while read -p "please input a letter: " letter
    do
    ((`awk -v var="$letter" 'BEGIN{print length(var)}'` == 1)) grep -q $letter /tmp/tmpfile break
    done
    rm -f /tmp/letterfile
    echo "you input letter $letter "

    [root@station1 ~]# chmod +x a.sh
    [root@station1 ~]# ./a.sh
    please input a letter: 123
    please input a letter: abc
    please input a letter: 4
    please input a letter:
    please input a letter: (
    please input a letter: a
    you input letter a
    [root@station1 ~]#

    最初使用expr length $letter 替代 wk -v var="$letter" 'BEGIN{print length(var)}'的,但是,当输入*等特殊字符时,会报错。
    如下:
    [root@station1 ~]# cat data

    复制代码 代码如下:

    while read -p "please input a letter: " letter
    do
    ((`expr length $letter` == 1)) expr $letter : [[:alnum:]] > /dev/null break
    done
    echo "you input letter $letter "

    [root@station1 ~]# bash data
    please input a letter: 123
    please input a letter: abc
    please input a letter: a
    you input letter a
    [root@station1 ~]# bash data
    please input a letter: *
    expr: 语法错误
    data: line 3: ((: == 1: syntax error: operand expected (error token is "== 1")
    please input a letter:

    来看方法二:

    复制代码 代码如下:

    while read -p "please input a letter: " letter
    do
    [[ `echo $letter | awk '/^[[:alpha:]]$/{print "1"}'` -eq 1 ]] break
    done
    echo "you input letter $letter "

    如下:
    [root@station1 ~]# cat b.sh

    复制代码 代码如下:

    while read -p "please input a letter: " letter
    do
    [[ `echo $letter | awk '/^[[:alpha:]]$/{print "1"}'` -eq 1 ]] break
    done
    echo "you input letter $letter "

    [root@station1 ~]# chmod +x b.sh
    [root@station1 ~]# ./b.sh
    please input a letter: *
    please input a letter: abc
    please input a letter: 234
    please input a letter: )
    please input a letter: T
    you input letter T
    [root@station1 ~]#

    您可能感兴趣的文章:
    • Linux使用sed命令替换字符串教程
    • linux特殊字符及其作用大全
    • linux shell字符串内置的常用操作(获取长度、查找、替换)
    • Linux shell脚本中字符串连接的方法
    • linux bash字符串处理大全
    • Linux 中删除文本中的回车字符的方法
    上一篇:awk中让人郁闷的system()函数
    下一篇:Linux里awk中split函数的用法小结
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    linux shell实现获取用户输入指定范围的单个字符的两种方法 linux,shell,实现,获取,用户,