亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > Linux Shell > 正文

shell腳本中case條件控制語句的一個bug分析

2020-07-27 19:21:59
字體:
來源:轉載
供稿:網友

在shell腳本中,發現case語句的一個問題。
就是指定小寫字母[a-z]和大寫字母[A-Z]的這種方法不管用了。

出現如下情況:

復制代碼 代碼如下:

[root@station1 ~]# cat case.sh
#!/bin/bash
while :
do
echo -n "input a letter: "
read var
case "$var" in
  [a-z]) echo "Lowercase letter";;
  [A-Z]) echo "Uppercase letter";;
 [0-9]) echo "Digit";;
  *) echo "Punctuation, whitespace, or other";;
esac
done
[root@station1 ~]# bash case.sh
input a letter: a
Lowercase letter
input a letter: A
Lowercase letter
input a letter: 2
Digit
input a letter: 0
Digit
input a letter: B
Lowercase letter
input a letter: y
Lowercase letter
input a letter: ^C
[root@station1 ~]#

可以看到當輸入大小寫字母都會輸出“Lowercase letter”

就當我疑惑不解的時候,奇跡發生了。。。。

復制代碼 代碼如下:

[root@station1 ~]# bash case.sh
input a letter: Z
Uppercase letter
input a letter:

當輸入大寫Z的時候,終于出現了我們想要的結果:Uppercase letter
后來在man bash文檔中也沒有關于"-"代表范圍的說明,值說想匹配"-",就把"-"放到[]中最前面或者最后面。
case word in [ [(] pattern [ | pattern ] ... ) list ;; ] ... esac
A case command first expands word, and tries to match it against each pattern in turn, using the same matching rules as for pathname
expansion (see Pathname Expansion below). The word is expanded using tilde expansion, parameter and variable expansion, arithmetic sub-
stitution, command substitution, process substitution and quote removal. Each pattern examined is expanded using tilde expansion, param-
eter and variable expansion, arithmetic substitution, command substitution, and process substitution. If the shell option nocasematch is
enabled, the match is performed without regard to the case of alphabetic characters. When a match is found, the corresponding list is
executed. If the ;; operator is used, no subsequent matches are attempted after the first pattern match. Using ;& in place of ;; causes
execution to continue with the list associated with the next set of patterns. Using ;;& in place of ;; causes the shell to test the next
pattern list in the statement, if any, and execute any associated list on a successful match. The exit status is zero if no pattern
matches. Otherwise, it is the exit status of the last command executed in list.

再看下面這段代碼:

復制代碼 代碼如下:

[root@station1 ~]# cat case.sh
#!/bin/bash
while :
do
echo -n "input a letter: "
read var
case "$var" in
[a-c]) echo "Lowercase letter";;
[A-Z]) echo "Uppercase letter";;
[0-9]) echo "Digit";;
*) echo "Punctuation, whitespace, or other";;
esac
done
[root@station1 ~]# bash case.sh
input a letter: a
Lowercase letter
input a letter: b
Lowercase letter
input a letter: c
Lowercase letter
input a letter: d
Uppercase letter
input a letter: e
Uppercase letter
input a letter: ^C
[root@station1 ~]#

可以看出來它的編碼方式是:aAbBcCdDeE...yYzZ
所以才會出現這種情況。這也算是一個小bug吧,如果想真的想達到我們想要的結果,可以用posix的[:upper:]。
個人想法:有時候出現這種情況也不是個壞事,或許還可以利用這個bug去做點事。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
成人国产精品久久久| 日本欧美在线视频| 欧美高清在线观看| 欧美在线激情视频| 日韩在线观看免费全| 欧美成人精品在线视频| 国产第一区电影| 亚洲欧美中文日韩在线| 国产亚洲激情视频在线| 国产精品国产三级国产aⅴ浪潮| 久久精品国产欧美亚洲人人爽| 亚洲另类欧美自拍| 欧美日韩国产激情| 亚洲欧美激情视频| 亚洲区中文字幕| 亚洲永久免费观看| 欧美色图在线视频| 国产日韩精品综合网站| 久久青草精品视频免费观看| 日韩欧美成人精品| 欧美视频免费在线观看| 午夜免费在线观看精品视频| 国外成人在线直播| 91免费看片在线| 国内精品久久久| 国产日韩在线看片| 欧美色图在线视频| 57pao精品| 少妇高潮久久77777| 中文字幕亚洲字幕| 日本高清视频精品| 国产精品色婷婷视频| 亚洲女同性videos| 久久99久国产精品黄毛片入口| 92国产精品视频| 日韩在线视频观看| 欧美成人午夜免费视在线看片| 亚洲精品视频免费在线观看| 亚洲天堂av综合网| 精品久久久久久电影| 国产日韩精品综合网站| 亚洲aa在线观看| 亚洲美女www午夜| 久久久久久久爱| 欧美成人三级视频网站| 国产精品jvid在线观看蜜臀| 日韩av一区在线观看| 97色在线观看| 国产婷婷色综合av蜜臀av| 日韩免费av一区二区| 国产精品久久久av久久久| 日韩大胆人体377p| 成人网在线免费观看| 久久九九热免费视频| 亚洲国内精品视频| 全亚洲最色的网站在线观看| 国产精品夜间视频香蕉| 亚洲精选一区二区| 91av在线影院| 欧美激情视频网站| 2018日韩中文字幕| 国产精品久久久久久久久男| 欧美在线免费视频| 78m国产成人精品视频| 亚洲四色影视在线观看| 久久99亚洲精品| 日韩中文字幕不卡视频| 日韩中文字幕第一页| 国产午夜精品全部视频在线播放| 日韩在线观看av| 色视频www在线播放国产成人| 色一情一乱一区二区| 亚洲国产中文字幕在线观看| 亚洲国产精彩中文乱码av在线播放| 97在线视频免费播放| 97在线视频观看| 国产精品一区二区三区久久| 亚洲精品国产suv| 欧美国产极速在线| 97香蕉久久超级碰碰高清版| 亚洲www视频| 在线观看国产精品91| 中文字幕亚洲精品| 亚洲系列中文字幕| 欧美激情奇米色| 欧美天天综合色影久久精品| 国产精品麻豆va在线播放| 国产福利视频一区二区| 狠狠躁天天躁日日躁欧美| 亚洲成人亚洲激情| 欧美丰满少妇xxxx| 中文字幕欧美日韩精品| 久久99久久99精品中文字幕| 国模极品一区二区三区| 久久久噜噜噜久噜久久| 精品国产一区二区三区久久| 91影视免费在线观看| 色悠悠久久久久| 国产精品高潮呻吟久久av野狼| 日本久久久久久久久| 国产美女扒开尿口久久久| 国产精品99久久99久久久二8| 欧美高跟鞋交xxxxhd| 亚洲国产高清福利视频| 亚洲欧美日韩精品| 国产在线日韩在线| 国产99久久精品一区二区永久免费| 日韩欧美aⅴ综合网站发布| 欧美激情第99页| 久热精品视频在线观看一区| 亚洲天堂开心观看| 久久九九有精品国产23| 亚洲一区二区三区乱码aⅴ蜜桃女| 亚洲免费一在线| 国产亚洲免费的视频看| 久久久久久久成人| 青草热久免费精品视频| 国产日本欧美一区二区三区| 97色在线视频观看| 国产精品99久久久久久白浆小说| 国产精品露脸av在线| 96精品久久久久中文字幕| 国内精品久久久久久中文字幕| 国产精品久久久久77777| 精品中文字幕在线2019| 亚洲另类欧美自拍| 日韩福利伦理影院免费| 亚洲欧美另类中文字幕| 亚洲激情视频在线| 国产精品女视频| 国产在线观看精品一区二区三区| 成人午夜激情免费视频| 欧美在线视频一区| 成人免费在线网址| 亚洲一区美女视频在线观看免费| 亚洲图片欧洲图片av| 国产精品美女久久| 国产精品精品久久久| 最近日韩中文字幕中文| 亚洲国产天堂久久国产91| 久久久久久久激情视频| 91超碰中文字幕久久精品| 黑人与娇小精品av专区| 欧美乱大交xxxxx| 久久99热这里只有精品国产| 午夜精品视频在线| 北条麻妃久久精品| 亚洲日本欧美日韩高观看| 亚洲美女在线观看| 久久久久一本一区二区青青蜜月| 久久黄色av网站| 日韩精品极品视频免费观看| 久久99热精品这里久久精品| 成人免费观看49www在线观看| 亚洲综合自拍一区| 精品欧美国产一区二区三区| 国产视频观看一区| 国产精品永久免费| 欧美日韩精品国产| 最近2019年日本中文免费字幕| 欧美一级黄色网| 欧美日韩国产中字| 日韩欧美国产成人| 国产精品久久久久久久久久|