本文所選的例子來自于《advanced bash-scripting gudie》一書,譯者 楊春敏 黃毅
?
<span style="color: #008080">1</span> <span style="color: #000000">例1: </span><span style="color: #008080">2</span> [ <span style="color: #800080">1</span> -eq <span style="color: #800080">1</span> ] && [ -n <span style="color: #800000">"</span><span style="color: #800000">`echo true 1>&2`</span><span style="color: #800000">"</span> ] #<span style="color: #0000ff">true。1>&2表示將標(biāo)準(zhǔn)輸出輸出到文件描述符2(標(biāo)準(zhǔn)錯(cuò)誤輸出:屏幕)</span> <span style="color: #008080">3</span> [ <span style="color: #800080">2</span> -eq <span style="color: #800080">2</span> ] && [ -n <span style="color: #800000">"</span><span style="color: #800000">`echo true 1>&2`</span><span style="color: #800000">"</span><span style="color: #000000"> ] #(not output) </span><span style="color: #008080">4</span> <span style="color: #008080">5</span> [ <span style="color: #800080">1</span> -eq <span style="color: #800080">2</span> -a -n <span style="color: #800000">"</span><span style="color: #800000">`echo true 1>&2`</span><span style="color: #800000">"</span> ] #<span style="color: #0000ff">true,這是錯(cuò)誤的結(jié)果,難道是因?yàn)閱卫ㄌ?hào)數(shù)值計(jì)算中有兩個(gè)條件判斷嗎?</span> <span style="color: #008080">6</span> <span style="color: #008080">7</span> [[ <span style="color: #800080">1</span> -eq <span style="color: #800080">2</span> && -n <span style="color: #800000">"</span><span style="color: #800000">`echo true 1>&2`</span><span style="color: #800000">"</span> ] #(not output),有些-a 或 -o 不正確的情況,顯然&&或||要穩(wěn)妥些
-a 和 -o一般與[ ]使用,如:[ “$exp1” -a “$exp2” ]
&& 和 || 一般與[[ ]] 使用,如:[[ condition1 && condition2 ]]
?
<span style="color: #008080">1</span> <span style="color: #000000">例2 </span><span style="color: #008080">2</span> [ $a == z*<span style="color: #000000"> ] #<span style="background-color: #00ff00">模式匹配:如果$a以a開頭,則為true </span></span><span style="color: #008080">3</span> [ $a == <span style="color: #800000">"</span><span style="color: #800000">z*</span><span style="color: #800000">"</span> ] #<span style="background-color: #00ff00">字符匹配:如果$a的值等于z*<span style="color: #000000">,則為true </span></span><span style="color: #008080">4</span> <span style="color: #008080">5</span> [ $a = z*<span style="color: #000000"> ] #<span style="background-color: #00ff00">file globbing and word splitting 將會(huì)發(fā)生,什么意思? </span></span><span style="color: #008080">6</span> [ $a = <span style="color: #800000">"</span><span style="color: #800000">z*</span><span style="color: #800000">"</span> ] #<span style="background-color: #00ff00">字符匹配:如果$a的值等于z*,則為true</span>
以上屬于字符串的比較,只不過==的功能在[[]]和[]中的行為是不同的。
?
<span style="color: #008080"> 1</span> <span style="color: #000000">例3 </span><span style="color: #008080"> 2</span> <span style="color: #000000">#只能用[[ ]] 可以進(jìn)行進(jìn)制轉(zhuǎn)換比較 </span><span style="color: #008080"> 3</span> <span style="color: #008080"> 4</span> <span style="color: #0000ff">decimal</span>=<span style="color: #800080">15</span><span style="color: #000000"> #十進(jìn)制 </span><span style="color: #008080"> 5</span> octial=<span style="color: #800080">017</span><span style="color: #000000"> #八進(jìn)制 </span><span style="color: #008080"> 6</span> hex=<span style="color: #800080">0x0f</span><span style="color: #000000"> #十六進(jìn)制 </span><span style="color: #008080"> 7</span> <span style="color: #0000ff">if</span> [ <span style="color: #800000">"</span><span style="color: #800000">$decimal</span><span style="color: #800000">"</span> -eq <span style="color: #800000">"</span><span style="color: #800000">$octal</span><span style="color: #800000">"</span><span style="color: #000000"> ] </span><span style="color: #008080"> 8</span> <span style="color: #0000ff">then</span> <span style="color: #008080"> 9</span> <span style="color: #0000ff">echo</span> <span style="color: #800000">"</span><span style="color: #800000">$decimal equals $octal</span><span style="color: #800000">"</span> <span style="color: #008080">10</span> <span style="color: #0000ff">else</span> <span style="color: #008080">11</span> <span style="color: #0000ff">echo</span> <span style="color: #800000">"</span><span style="color: #800000">$decimal is not equal to $octal</span><span style="color: #800000">"</span> # <span style="color: #800080">15</span> is not equal to <span style="color: #800080">017</span> <span style="color: #008080">12</span> <span style="color: #0000ff">fi</span> <br> # 不能用單括號(hào)[ ]計(jì)算! <span style="color: #008080">13</span> <span style="color: #0000ff">if</span> [[ <span style="color: #800000">"</span><span style="color: #800000">$decimal</span><span style="color: #800000">"</span> -eq <span style="color: #800000">"</span><span style="color: #800000">$octal</span><span style="color: #800000">"</span><span style="color: #000000"> ]] </span><span style="color: #008080">14</span> <span style="color: #0000ff">then</span> <span style="color: #008080">15</span> <span style="color: #0000ff">echo</span> <span style="color: #800000">"</span><span style="color: #800000">$decimal equals $octal</span><span style="color: #800000">"</span> # <span style="color: #800080">15</span> equals <span style="color: #800080">017</span> <span style="color: #008080">16</span> <span style="color: #0000ff">else</span> <span style="color: #008080">17</span> <span style="color: #0000ff">echo</span> <span style="color: #800000">"</span><span style="color: #800000">$decimal is not equal to $octal</span><span style="color: #800000">"</span> <span style="color: #008080">18</span> <span style="color: #0000ff">fi</span> # 要用雙括號(hào)[[ ]]計(jì)算! <span style="color: #008080">19</span> <span style="color: #0000ff">if</span> [[ <span style="color: #800000">"</span><span style="color: #800000">$decimal</span><span style="color: #800000">"</span> -eq <span style="color: #800000">"</span><span style="color: #800000">$hex</span><span style="color: #800000">"</span><span style="color: #000000"> ]] </span><span style="color: #008080">20</span> <span style="color: #0000ff">then</span> <span style="color: #008080">21</span> <span style="color: #0000ff">echo</span> <span style="color: #800000">"</span><span style="color: #800000">$decimal equals $hex</span><span style="color: #800000">"</span> # <span style="color: #800080">15</span> equals <span style="color: #800080">0x0f</span> <span style="color: #008080">22</span> <span style="color: #0000ff">else</span> <span style="color: #008080">23</span> <span style="color: #0000ff">echo</span> <span style="color: #800000">"</span><span style="color: #800000">$decimal is not equal to $hex</span><span style="color: #800000">" #<span class="fontstyle0">[[ $hexadecimal ]]也能計(jì)算<br></span></span> <span style="color: #008080">24</span> <span style="color: #0000ff">fi</span>
?
? 版權(quán)聲明
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載。
THE END