国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > Linux Shell > 正文

linux shell實現(xiàn)獲取用戶輸入指定范圍的單個字符的兩種方法

2020-07-27 19:23:22
字體:
供稿:網(wǎng)友

方法一:

復(fù)制代碼 代碼如下:

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

復(fù)制代碼 代碼如下:

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)輸入*等特殊字符時,會報錯。
如下:
[root@station1 ~]# cat data

復(fù)制代碼 代碼如下:

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:

來看方法二:

復(fù)制代碼 代碼如下:

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

復(fù)制代碼 代碼如下:

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

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 新乐市| 林芝县| 陇西县| 衡山县| 高雄市| 开远市| 库车县| 乡宁县| 建昌县| 商丘市| 淮北市| 呼图壁县| 台山市| 陆丰市| 大新县| 射洪县| 河间市| 昌平区| 湟中县| 南溪县| 隆回县| 靖远县| 南城县| 峡江县| 元谋县| 黄石市| 河西区| 鄂尔多斯市| 上高县| 鹤岗市| 浏阳市| 镇坪县| 宁南县| 镇宁| 郁南县| 宽甸| 南郑县| 中方县| 肇州县| 永城市| 绥芬河市|