<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # 5.1 引用變量 引用變量時,通常建議將變量包含在雙引號中。因為這樣可以防止除 `$`,`` ` ``(反引號)和`\`(轉義符)之外的其他特殊字符被重新解釋。[^1]在雙引號中仍然可以使用`$`引用變量(`"$variable"`),也就是將變量名替換為變量值(詳情查看樣例 4-1)。 使用雙引號可以防止字符串被分割。[^2]即使參數中擁有很多空白分隔符,被包在雙引號中后依舊是算作單一字符。 ```bash List="one two three" for a in $List # 空白符將變量分成幾個部分。 do echo "$a" done # one # two # three echo "---" for a in "$List" # 在單一變量中保留所有空格。 do # ^ ^ echo "$a" done # one two three ``` 下面是一個更加復雜的例子: ```bash variable1="a variable containing five words" COMMAND This is $variable1 # 帶上7個參數執行COMMAND命令: # "This" "is" "a" "variable" "containing" "five" "words" COMMAND "This is $variable1" # 帶上1個參數執行COMMAND命令: # "This is a variable containing five words" variable2="" # 空值。 COMMAND $variable2 $variable2 $variable2 # 不帶參數執行COMMAND命令。 COMMAND "$variable2" "$variable2" "$variable2" # 帶上3個參數執行COMMAND命令。 COMMAND "$variable2 $variable2 $variable2" # 帶上1個參數執行COMMAND命令(2空格)。 # 感謝 Stéphane Chazelas。 ``` > ![info](http://tldp.org/LDP/abs/images/tip.gif) 當字符分割或者保留空白符出現問題時,才需要在`echo`語句中用雙引號包住參數。 樣例 5-1. 輸出一些奇怪的變量 ```bash #!/bin/bash # weirdvars.sh: 輸出一些奇怪的變量 echo var="'(]\\{}\$\"" echo $var # '(]\{}$" echo "$var" # '(]\{}$" 沒有任何區別。 echo IFS='\' echo $var # '(] {}$" \ 被轉換成了空格,為什么? echo "$var" # '(]\{}$" # 上面的例子由 Stephane Chazelas 提供。 echo var2="\\\\\"" echo $var2 # " echo "$var2" # \\" echo # 但是...var2="\\\\"" 不是合法的語句,為什么? var3='\\\\' echo "$var3" # \\\\ # 強引用是可以的。 # ************************************************************ # # 就像第一個例子展示的那樣,嵌套引用是允許的。 echo "$(echo '"')" # " # ^ ^ # 在有些時候這種方法非常有用。 var1="Two bits" echo "\$var1 = "$var1"" # $var1 = Two bits # ^ ^ # 或者,可以像 Chris Hiestand 指出的那樣: if [[ "$(du "$My_File1")" -gt "$(du "$My_File2")" ]] # ^ ^ ^ ^ ^ ^ ^ ^ then ... fi # ************************************************************ # ``` 單引號(' ')與雙引號類似,但是在單引號中不能引用變量,因為 `$` 不再具有特殊含義。在單引號中,除`'`之外的所有特殊字符都將會被直接按照字面意思解釋。可以認為單引號(“全引用”)是雙引號(“部分引用”)的一種更嚴格的形式。 > ![extra](http://tldp.org/LDP/abs/images/note.gif) 因為在單引號中轉義符(\)都已經按照字面意思解釋了,因此嘗試在單引號中包含單引號將不會產生你所預期的結果。 > ```bash echo "Why can't I write 's between single quotes" > echo > # 可以采取迂回的方式。 echo 'Why can'\''t I write '"'"'s between single quotes' # |-------| |----------| |-----------------------| # 由三個單引號引用的字符串,再加上轉義以及雙引號包住的單引號組成。 > # 感謝 Stéphane Chazelas 提供的例子。 ``` [^1]: 在命令行里,如果雙引號包含了 "!" 將會產生錯誤。這是因為shell將其解釋為查看歷史命令。而在腳本中,因為歷史機制已經被關閉,所以不會產生這個問題。<br>我們更加需要注意的是在雙引號中 `\` 的反常行為,尤其是在使用 `echo -e` 命令時。<br><pre>bash$ echo hello\\!<br>hello!<br>bash$ echo "hello\\!"<br>hello\\!<br><br><br>bash$ echo \\<br>><br>bash$ echo "\\"<br>><br>bash$ echo \a<br>a<br>bash$ echo "\a"<br>\a<br><br><br>bash$ echo x\ty<br>xty<br>bash$ echo "x\ty"<br>x\ty<br><br>bash$ echo -e x\ty<br>xty<br>bash$ echo -e "x\ty"<br>x y</pre>在 `echo` 后的雙引號中一般會轉義 `\`。并且 `echo -e` 會將 `"\t"` 解釋成制表符。<br>(感謝 Wayne Pollock 提出這些;感謝Geoff Lee 與 Daniel Barclay 對此做出的解釋。) [^2]: 字符分割(word splitting)在本文中的意思是指將一個字符串分割成獨立的、離散的變量。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看