誰能解釋下下面的輸出,為什么是yes?
[root@CentOS6 ~]# a="3"
[root@CentOS6 ~]# [ -n $a ] && echo yes || echo no
yes
[root@CentOS6 ~]# [ -n "$a" ] && echo yes || echo no
yes
[root@CentOS6 ~]# a="3"
[root@CentOS6 ~]# [ -n $a ] && echo yes || echo no
yes
[root@CentOS6 ~]# [ -n "$a" ] && echo yes || echo no
yes
2015-08-19
舉報(bào)
2015-08-20
&& 的作用是:前面的命令成功執(zhí)行的話,就再執(zhí)行后面的命令。若前面的命令失敗就不執(zhí)行后面的命令了。
|| 的作用是:前面的命令失敗的話,就再執(zhí)行后面的命令。若前面的命令成功執(zhí)行,就不再執(zhí)行后面的命令了。
[ ] 括起來的是個(gè)判斷語句,-n 用來判斷后面字符串的長度是否大于零,這里就用來判斷a這個(gè)參數(shù)是否賦過值。
$a 和 "$a" 這兩個(gè)寫法在這里沒有區(qū)別,bash shell中默認(rèn)把他們都作為字符串,加上雙引號只是指明了這是字符串。如果字符串中有空格之類的間隔,那么加上雙引號才會(huì)被認(rèn)為是一個(gè)字符串,否則就是用空格隔開的多個(gè)字符串了。
所以這語句就是判斷a變量有沒有值,因?yàn)槭怯械模詧?zhí)行了&&后的echo yes。又因?yàn)槌晒Υ蛴〕隽藋es,所以||后面的echo no就不執(zhí)行了。
2018-06-05
有教程說 [ -z ... ]表示判斷是否為空 ; [ -n ... ]表示判斷是否為非空 ,等同于 [ ! -z ... ] 。