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

 更新时间:2013年03月02日 19:51:37   作者:  
用shell实现的,要求获取用户输一个字符a-zA-Z实现方法如下,需要的朋友可以参考下

方法一:

复制代码 代码如下:

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 ~]#

相关文章

  • shell脚本批量创建用户的方法小结

    shell脚本批量创建用户的方法小结

    有些面试题中会问到批量创建用户的题目,大体是用循环去进行创建,但有时也会有一些额外的附加条件,下面这篇文章主要给大家介绍了关于shell脚本批量创建用户的相关资料,需要的朋友可以参考下
    2022-03-03
  • Shell中实现整数自增的几种方法示例

    Shell中实现整数自增的几种方法示例

    Linux Shell中写循环时,常常要用到变量的自增,下面这篇文章主要给大家分享了关于Shell中实现整数变量自增的几种方法,包括declare -i来声明、使用let命令、使用(())以及使用expr命令等等方法,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-08-08
  • shell中if条件判断的实现

    shell中if条件判断的实现

    本文主要介绍了shell中if条件判断的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06
  • Linux中cat命令的使用详解

    Linux中cat命令的使用详解

    cat 命令的用途不仅仅是显示文件内容,还可以打印文本文件的文件内容,下面就为大家详细介绍一下Linux中cat命令的具体用法,需要的小伙伴可以了解一下
    2023-08-08
  • hi 感恩节——Linux基础教程之mysql和php

    hi 感恩节——Linux基础教程之mysql和php

    这篇文章主要介绍了hi 感恩节——Linux基础教程之mysql和php的相关资料,需要的朋友可以参考下
    2015-11-11
  • Shell脚本中使用getopts处理多命令行选项

    Shell脚本中使用getopts处理多命令行选项

    今天小编就为大家分享一篇关于Shell脚本中使用getopts处理多命令行选项,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03
  • shell脚本学习指南[六](Arnold Robbins & Nelson H.F. Beebe著)

    shell脚本学习指南[六](Arnold Robbins & Nelson H.F. Beebe著)

    这篇文章主要介绍了shell脚本学习指南[六](Arnold Robbins & Nelson H.F. Beebe著),需要的朋友可以参考下
    2014-02-02
  • 浅谈vim的四种模式及模式切换

    浅谈vim的四种模式及模式切换

    下面小编就为大家带来一篇浅谈vim的四种模式及模式切换。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-01-01
  • 使用shell脚本找出网站的空页面和404错误页面

    使用shell脚本找出网站的空页面和404错误页面

    这篇文章主要介绍了使用shell脚本找出网站的空页面和404错误页面,本文使用一句话实现,需要的朋友可以参考下
    2014-11-11
  • 对shell中常见参数及判断命令介绍

    对shell中常见参数及判断命令介绍

    今天小编就为大家分享一篇对shell中常见参数及判断命令介绍,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-07-07

最新评论