手机
当前位置:查字典教程网 >脚本专栏 >linuxshell >linux shell实现获取用户输入指定范围的单个字符的两种方法
linux shell实现获取用户输入指定范围的单个字符的两种方法
摘要:方法一:复制代码代码如下:echo`echo{a..z}``echo{A..Z}`>/tmp/letterfilewhileread-p"p...

方法一:

复制代码 代码如下:

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 shell实现获取用户输入指定范围的单个字符的两种方法】相关文章:

linux命令详解之挂载光驱的方法

Linux shell脚本编程if语句的使用方法(条件判断)

shell中的各种括号的使用方法

linux下使用perl获取本机ip的几种方法介绍

UNIX sh(Bourne Shell)脚本里面使用数组的两种方法

Shell 命令替换的两种方式

Linux上安装和卸载rpm软件包的方法

shell备份文件、重命名文件、删除指定文件的3个脚本分享

shell编程中的字符串截取方法小结

shell脚本中28个特殊字符的作用简明总结

精品推荐
分类导航