源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

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

  • 时间:2021-05-22 06:25 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:linux shell实现获取用户输入指定范围的单个字符的两种方法
方法一:
[u]复制代码[/u] 代码如下:
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
[u]复制代码[/u] 代码如下:
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
[u]复制代码[/u] 代码如下:
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: 来看方法二:
[u]复制代码[/u] 代码如下:
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
[u]复制代码[/u] 代码如下:
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 ~]#
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部