字符串判斷

創(chuàng)新互聯(lián)建站是網(wǎng)站建設(shè)專家,致力于互聯(lián)網(wǎng)品牌建設(shè)與網(wǎng)絡(luò)營銷,專業(yè)領(lǐng)域包括網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)、電商網(wǎng)站制作開發(fā)、小程序開發(fā)、微信營銷、系統(tǒng)平臺(tái)開發(fā),與其他網(wǎng)站設(shè)計(jì)及系統(tǒng)開發(fā)公司不同,我們的整合解決方案結(jié)合了恒基網(wǎng)絡(luò)品牌建設(shè)經(jīng)驗(yàn)和互聯(lián)網(wǎng)整合營銷的理念,并將策略和執(zhí)行緊密結(jié)合,且不斷評(píng)估并優(yōu)化我們的方案,為客戶提供全方位的互聯(lián)網(wǎng)品牌整合方案!
str1 = str2當(dāng)兩個(gè)串有相同內(nèi)容、長度時(shí)為真
str1 != str2 當(dāng)串str1和str2不等時(shí)為真
-n str1 當(dāng)串的長度大于0時(shí)為真(串非空)
-z str1 當(dāng)串的長度為0時(shí)為真(空串)
str1 當(dāng)串str1為非空時(shí)為真
2、數(shù)字的判斷
int1 -eq int2兩數(shù)相等為真
int1 -ne int2兩數(shù)不等為真
int1 -gt int2int1大于int2為真
int1 -ge int2int1大于等于int2為真
int1 -lt int2int1小于int2為真
int1 -le int2int1小于等于int2為真
3 文件的判斷
-r file 用戶可讀為真
-w file 用戶可寫為真
-x file 用戶可執(zhí)行為真
-f file 文件為正規(guī)文件為真
-d file 文件為目錄為真
-c file 文件為字符特殊文件為真
-b file 文件為塊特殊文件為真
-s file 文件大小非0時(shí)為真
-t file 當(dāng)文件描述符(默認(rèn)為1)指定的設(shè)備為終端時(shí)為真
3、復(fù)雜邏輯判斷
-a 與
-o 或
! 非
EXAMPLE:
[ -a FILE ] 如果 FILE 存在則為真。
[ -b FILE ] 如果 FILE 存在且是一個(gè)塊特殊文件則為真。
[ -c FILE ] 如果 FILE 存在且是一個(gè)字特殊文件則為真。
[ -d FILE ] 如果 FILE 存在且是一個(gè)目錄則為真。
[ -e FILE ] 如果 FILE 存在則為真。
[ -f FILE ] 如果 FILE 存在且是一個(gè)普通文件則為真。
[ -g FILE ] 如果 FILE 存在且已經(jīng)設(shè)置了SGID則為真。
[ -h FILE ] 如果 FILE 存在且是一個(gè)符號(hào)連接則為真。
[ -k FILE ] 如果 FILE 存在且已經(jīng)設(shè)置了粘制位則為真。
[ -p FILE ] 如果 FILE 存在且是一個(gè)名字管道(F如果O)則為真。
[ -r FILE ] 如果 FILE 存在且是可讀的則為真。
[ -s FILE ] 如果 FILE 存在且大小不為0則為真。
[ -t FD ] 如果文件描述符 FD 打開且指向一個(gè)終端則為真。
[ -u FILE ] 如果 FILE 存在且設(shè)置了SUID (set user ID)則為真。
[ -w FILE ] 如果 FILE 如果 FILE 存在且是可寫的則為真。
[ -x FILE ] 如果 FILE 存在且是可執(zhí)行的則為真。
[ -O FILE ] 如果 FILE 存在且屬有效用戶ID則為真。
[ -G FILE ] 如果 FILE 存在且屬有效用戶組則為真。
[ -L FILE ] 如果 FILE 存在且是一個(gè)符號(hào)連接則為真。
[ -N FILE ] 如果 FILE 存在 and has been mod如果ied since it was last read則為真。
[ -S FILE ] 如果 FILE 存在且是一個(gè)套接字則為真。
[ FILE1 -nt FILE2 ] 如果 FILE1 has bee more recently than FILE2, or 如果 FILE1 exists and FILE2 does not則為真。
[ FILE1 -ot FILE2 ] 如果 FILE1 比 FILE2 要老, 或者 FILE2 存在且 FILE1 不存在則為真。
[ FILE1 -ef FILE2 ] 如果 FILE1 和 FILE2 指向相同的設(shè)備和節(jié)點(diǎn)號(hào)則為真。
[ -o OPTIONNAME ] 如果 shell選項(xiàng) “OPTIONNAME” 開啟則為真。
[ -z STRING ] “STRING” 的長度為零則為真。
[ -n STRING ] or [ STRING ] “STRING” 的長度為非零 non-zero則為真。
[ STRING1 == STRING2 ] 如果2個(gè)字符串相同。 “=” may be used instead of “==” for strict POSIX compliance則為真。
[ STRING1 != STRING2 ] 如果字符串不相等則為真。
腳本 里 -a是正則表達(dá)式的 ,即全部條件成立才成立,只要第一個(gè)條件不成立后面的都不會(huì)執(zhí)行,\( $1 =='q' -a $1 =='Q' -a $1 =='Quit' -a $1 == 'quit' \),你每次輸入一個(gè)Q/Quit/q/quit,都只是符合其中一個(gè)條件,故這個(gè)語句值為假,然后!是當(dāng)if [ ! **** ]后面的****為假時(shí)執(zhí)行,即會(huì)直接輸出“NOT Quiting....” 。
-o 是只要有一個(gè)條件成立,全部語句就成立,當(dāng)你輸入Q/Quit/q/quit時(shí),if 里面的 \( $1 =='q' -o $1 =='Q' -o $1 =='Quit' -o $1 == 'quit' \) 就是為真,前面再加上一個(gè)!,就是 假,故此時(shí)執(zhí)行else后面的語句,于是輸出結(jié)果是Unknown Argument。
只要知道!是取反就可以了,講的不好見諒。
題主你好,
先說作用再分析.
作用: 判斷 != 兩邊的字符串是否不相等, 即判斷"result"還" "是否不相等.
但是光說作用了,其實(shí)對(duì)于實(shí)際使用還是沒有太大幫助.
-----
分析:
上面是shell腳本中,if表達(dá)式的一個(gè)最基本的結(jié)構(gòu),3個(gè)紅框框選的部分是if表達(dá)式中必須要有的語法規(guī)定的部分.
條件表達(dá)式 和 中間一堆語句 是我們要自定義的.
而意思也很好理解, 當(dāng) 條件表達(dá)式 成立,則執(zhí)行中間那一堆語句.
而條件表達(dá)式部分,一般是使用test命令來實(shí)現(xiàn),你代碼中的[]其實(shí)是test命令的一種表現(xiàn)形式,也就是說:
if test "result" != " "? 與 if [ "result" != " " ] 它倆是一個(gè)玩意兒.
-----
所以為了好理解,我們就用第一種形式,if test "result" != " ",去理解.
test是測試的意思, 測試的是啥呢? 就是test后面的? "result" 與? " "是否 !=,而 !=表示不相等,因此測試的是"result" 與 " " 是否不相等,如果不相等則成立,就會(huì)執(zhí)行if語句塊了,而就題主問題中的if [ "result" != " " ],肯定是成立的,因此相應(yīng)if語句塊也會(huì)被執(zhí)行.
-----
再舉一個(gè)小例子,題主可以試一下:
執(zhí)行之后,題主可以將"b"換成"a",再執(zhí)行一下看看應(yīng)該什么都不會(huì)輸出,因?yàn)?a" != "a"這個(gè)條件不成立,所以不會(huì)執(zhí)行相應(yīng)的echo語句.
-----
擴(kuò)展閱讀:
具體test都能判斷哪些條件呢?具體要看一下man test中的說明了,下圖是手冊里的部分關(guān)于支持哪些判斷的一個(gè)截圖:
截圖中紅框框選的就是本題中用到的!=,用來判斷兩個(gè)字符串是否不相等.
=====
希望可以幫到題主, 歡迎追問.
名稱欄目:linux命令后執(zhí)行if,linux進(jìn)命令行
當(dāng)前路徑:http://chinadenli.net/article42/dsesdhc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站收錄、網(wǎng)站導(dǎo)航、建站公司、網(wǎng)頁設(shè)計(jì)公司、移動(dòng)網(wǎng)站建設(shè)、微信小程序
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)