亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

誰能解釋下下面的輸出,為什么是yes?

[root@CentOS6 ~]# a="3"

[root@CentOS6 ~]# [ -n $a ] && echo yes || echo no

yes

[root@CentOS6 ~]# [ -n "$a" ] && echo yes || echo no

yes


正在回答

2 回答

&& 的作用是:前面的命令成功執行的話,就再執行后面的命令。若前面的命令失敗就不執行后面的命令了。

|| 的作用是:前面的命令失敗的話,就再執行后面的命令。若前面的命令成功執行,就不再執行后面的命令了。

[ ] 括起來的是個判斷語句,-n 用來判斷后面字符串的長度是否大于零,這里就用來判斷a這個參數是否賦過值。

$a"$a" 這兩個寫法在這里沒有區別,bash shell中默認把他們都作為字符串,加上雙引號只是指明了這是字符串。如果字符串中有空格之類的間隔,那么加上雙引號才會被認為是一個字符串,否則就是用空格隔開的多個字符串了。

所以這語句就是判斷a變量有沒有值,因為是有的,所以執行了&&后的echo yes。又因為成功打印出了yes,所以||后面的echo no就不執行了。

1 回復 有任何疑惑可以回復我~
#1

libran 提問者

呵呵,一時犯了迷糊,把【-n】的意思理解反了,謝謝指點!
2015-08-22 回復 有任何疑惑可以回復我~

有教程說 [ -z ... ]表示判斷是否為空 ; [ -n ... ]表示判斷是否為非空 ,等同于 [ ! -z ... ] 。

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

誰能解釋下下面的輸出,為什么是yes?

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號