&2`" ] #true . 1>&2 bedeutet die Ausgabe der Standardausgabe an Dateideskriptor 2 (Standardfehlerausgabe: Bildschirm) 3 [ 2 -eq 2 ] &"/> &2`" ] #true . 1>&2 bedeutet die Ausgabe der Standardausgabe an Dateideskriptor 2 (Standardfehlerausgabe: Bildschirm) 3 [ 2 -eq 2 ] &">

Heim >Betrieb und Instandhaltung >Betrieb und Wartung von Linux >Studie „Advanced Bash-scripting Guide' (18): Einige Sonderfälle von [[ ]] und [ ]

Studie „Advanced Bash-scripting Guide' (18): Einige Sonderfälle von [[ ]] und [ ]

PHP中文网
PHP中文网Original
2017-07-11 18:16:081500Durchsuche

Die in diesem Artikel ausgewählten Beispiele stammen aus dem Buch „Advanced Bash-scripting Gudie“, Übersetzer Yang Chunmin Huang Yi

<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表示将标准输出输出到文件描述符2(标准错误输出:屏幕)</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,这是错误的结果,难道是因为单括号数值计算中有两个条件判断吗?</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 不正确的情况,显然&&或||要稳妥些

-a und -o werden im Allgemeinen mit [ ] verwendet, wie zum Beispiel: [ "$exp1" -a "$exp2" ]

&& und || werden im Allgemeinen mit [[ ]] verwendet, wie zum Beispiel: [[ Bedingung1 && Bedingung2 ]]

<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 将会发生,什么意思?
</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>

Oben ist ein Vergleich von Zeichenfolgen, aber die Funktion von == verhält sich in [[]] und [] anders.

<span style="color: #008080"> 1</span> <span style="color: #000000">例3
</span><span style="color: #008080"> 2</span> <span style="color: #000000">#只能用[[ ]] 可以进行进制转换比较
</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">                                     #十进制
</span><span style="color: #008080"> 5</span> octial=<span style="color: #800080">017</span><span style="color: #000000">                                     #八进制
</span><span style="color: #008080"> 6</span> hex=<span style="color: #800080">0x0f</span><span style="color: #000000">                                       #十六进制
</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>                                                  # 不能用单括号[ ]计算!
<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>                                             # 要用双括号[[ ]]计算!
<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 ]]也能计算<br></span></span>
<span style="color: #008080">24</span> <span style="color: #0000ff">fi</span> 

Das obige ist der detaillierte Inhalt vonStudie „Advanced Bash-scripting Guide' (18): Einige Sonderfälle von [[ ]] und [ ]. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn