您现在的位置是:网站首页> 编程资料编程资料
linux shell实现获取用户输入指定范围的单个字符的两种方法_linux shell_
2023-05-26
369人已围观
简介 linux shell实现获取用户输入指定范围的单个字符的两种方法_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 ~]#
相关内容
- awk中让人郁闷的system()函数_linux shell_
- 用shell+sendmail实现服务器监控报警小脚本_linux shell_
- 批量修改ssh配置的expect脚本_linux shell_
- 分享awk变量$0的妙用_linux shell_
- sed删除文件中的一行内容的脚本代码_linux shell_
- bash scp command not found的解决方法_linux shell_
- linux中mysql备份shell脚本代码_linux shell_
- linux下使用perl获取本机ip的几种方法介绍_linux shell_
- Linux下使用Shell脚本实现ftp的自动上传下载的代码小结_linux shell_
- 神奇的shell命令行输入与输出功能介绍_linux shell_
