日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

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

發布時間:2024/10/5 linux 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux获取指定字符,shell 获取用户输入指定范围的单个字符的两种方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

需求:要求獲取用戶輸一個字符a-zA-Z:

方法一:

復制代碼 代碼如下:

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 获取用户输入指定范围的单个字符的两种方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。