<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>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # 4.1 變量替換 變量名是其所指向值的一個占位符(placeholder)。引用變量值的過程我們稱之為變量替換(variable substitution)。 ### $ 接下來我們仔細區分一下**變量名**與**變量值**。如果變量名是 `variable1`, 那么 `$variable1` 就是對變量值的引用。[^1] ``` bash$ variable1=23 bash$ echo variable1 variable1 bash$ echo $variable1 23 ``` 變量僅僅在聲明時、賦值時、被刪除時(`unset`)、被導出時(`export`),算術運算中使用雙括號結構((...))時或在代表信號時(signal,查看樣例 32-5)才不需要有 $ 前綴。賦值可以是使用 =(比如 `var1=27`),可以是在 `read` 語句中,也可以是在循環的頭部(`for var2 in 1 2 3`)。 在雙引號`""`字符串中可以使用變量替換。我們稱之為部分引用,有時候也稱弱引用。而使用單引號`''`引用時,變量只會作為字符串顯示,變量替換不會發生。我們稱之為全引用,有時也稱強引用。更多細節將在第五章講解。 實際上, `$variable` 這種寫法是 `${variable}` 的簡化形式。在某些特殊情況下,使用 `$variable` 寫法會造成語法錯誤,使用完整形式會更好(查看章節 10.2)。 樣例 4-1. 變量賦值與替換 ```bash #!/bin/bash # ex9.sh # 變量賦值與替換 a=375 hello=$a # ^ ^ #---------------------------------------------------- # 初始化變量時,賦值號 = 的兩側絕不允許有空格出現。 # 如果有空格會發生什么? # "VARIABLE =value" # ^ #% 腳本將會嘗試運行帶參數 "=value" 的 "VARIABLE " 命令。 # "VARIABLE= value" # ^ #% 腳本將會嘗試運行 "value" 命令, #+ 同時設置環境變量 "VARIABLE" 為 ""。 #---------------------------------------------------- echo hello # hello # 沒有引用變量,"hello" 只是一個字符串... echo $hello # 375 # ^ 這是變量引用。 echo ${hello} # 375 # 與上面的類似,變量引用。 # 字符串內引用變量 echo "$hello" # 375 echo "${hello}" # 375 echo hello="A B C D" echo $hello # A B C D echo "$hello" # A B C D # 正如我們所見,echo $hello 與 echo "$hello" 的結果不同。 # ==================================== # 字符串內引用變量將會保留變量的空白符。 # ==================================== echo echo '$hello' # $hello # ^ ^ # 單引號會禁用掉(轉義)變量引用,這導致 "$" 將以普通字符形式被解析。 # 注意單雙引號字符串引用效果的不同。 hello= # 將其設置為空值 echo "\$hello (null value) = $hello" # $hello (null value) = # 注意 # 將一個變量設置為空與刪除(unset)它不同,盡管它們的表現形式相同。 # ----------------------------------------------- # 使用空白符分隔,可以在一行內對多個變量進行賦值。 # 但是這會降低程序的可讀性,并且可能會導致部分程序不兼容的問題。 var1=21 var2=22 var3=$V3 echo echo "var1=$var1 var2=$var2 var3=$var3" # 在一些老版本的 shell 中這樣寫可能會有問題。 # ----------------------------------------------- echo; echo numbers="one two three" # ^ ^ other_numbers="1 2 3" # ^ ^ # 如果變量中有空白符號,那么必須用引號進行引用。 # other_numbers=1 2 3 # 出錯 echo "numbers = $numbers" echo "other_numbers = $other_numbers" # other_numbers = 1 2 3 # 也可以轉義空白符。 mixed_bag=2\ ---\ Whatever # ^ ^ 使用 \ 轉義空格 echo "$mixed_bag" # 2 --- Whatever echo; echo echo "uninitialized_variable = $uninitialized_variable" # 未初始化的變量是空值(null表示不含有任何值)。 uninitialized_variable= # 只聲明而不初始化,等同于設為空值。 echo "uninitialized_variable = $uninitialized_variable" # 仍舊為空 uninitialized_variable=23 # 設置變量 unset uninitialized_variable # 刪除變量 echo "uninitialized_variable = $uninitialized_variable" # uninitialized_variable = # 變量值為空 echo exit 0 ``` > ![notice](http://tldp.org/LDP/abs/images/caution.gif) 一個未被賦值或未初始化的變量擁有空值(null value)。*注意:null值不等同于0*。 > ```bash if [ -z "$unassigned" ] then echo "\$unassigned is NULL." fi # $unassigned is NULL. ``` > 在賦值前使用變量可能會導致錯誤。但在算術運算中使用未賦值變量是可行的。 > ```bash echo "$uninitialized" # 空行 let "uninitialized += 5" # 加5 echo "$uninitialized" # 5 # 結論: # 一個未初始化的變量不含值(null),但在算術運算中會被作為0處理。 ``` > > 也可參考樣例 15-23。 [^1]: 實際上,變量名是被稱作左值(lvalue),意思是出現在賦值表達式的左側的值,比如 `VARIABLE=23`。變量值被稱作右值(rvalue),意思是出現在賦值表達式右側的值,比如 `VAR2=$VARIABLE`。<br />事實上,變量名只是一個引用,一枚指針,指向實際存儲數據內存地址的指針。
                  <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>

                              哎呀哎呀视频在线观看