linux shell實(shí)現(xiàn)獲取用戶輸入指定范圍的單個(gè)字符的兩種方法
方法一:
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)}'的,但是,當(dāng)輸入*等特殊字符時(shí),會(huì)報(bào)錯(cuò)。
如下:
[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: 語(yǔ)法錯(cuò)誤
data: line 3: ((: == 1: syntax error: operand expected (error token is "== 1")
please input a letter:
來(lái)看方法二:
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 ~]#
相關(guān)文章
shell實(shí)現(xiàn)FizzBuzzWhizz問(wèn)題示例(拉勾網(wǎng)面試題)
這篇文章主要介紹了shell實(shí)現(xiàn)FizzBuzzWhizz問(wèn)題示例(拉勾網(wǎng)面試題),需要的朋友可以參考下2014-05-05
shell 腳本中獲取命令的輸出的實(shí)現(xiàn)示例
本文主要介紹了shell 腳本中獲取命令的輸出的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02
Linux系統(tǒng)中運(yùn)行.sh文件的幾種方法
這篇文章主要給大家介紹了Linux系統(tǒng)中運(yùn)行.sh文件的幾種方法,文中通過(guò)圖文結(jié)合的方式介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Linux具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2024-12-12
使用Shell腳本如何啟動(dòng)/停止Java的jar程序
這篇文章主要介紹了使用Shell腳本如何啟動(dòng)/停止Java的jar程序,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12
Linux使用iptables實(shí)現(xiàn)屏蔽ip地址的示例詳解
netfilter/iptables(簡(jiǎn)稱為iptables)組成Linux平臺(tái)下的包過(guò)濾防火墻,與大多數(shù)的Linux軟件一樣,這個(gè)包過(guò)濾防火墻是免費(fèi)的。本文就來(lái)利用iptables實(shí)現(xiàn)屏蔽ip地址,需要的可以參考一下2022-10-10

