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

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                # 運算符優先級 在腳本中,運算執行的順序被稱為*優先級*: 高優先級的操作會比低優先級的操作先執行。[^1] **表 8-1. 運算符優先級(從高到低)** | 運算符 | 含義 | 注解 | |:------------|:--------------|:------------| | var++ var-- | 后綴自增/自減 | C風格運算符 | | ++var --var | 前綴自增/自減 | | | | | | | ! ~ | 按位取反/邏輯取反 | 對每一比特位取反/對邏輯判斷的結果取反 | | | | | | \*\* | 冪運算 | 算數運算符 | | \* / % | 乘, 除, 取余 | 算數運算符 | | + - | 加, 減 | 算數運算符 | | | | | | << >> | 左移, 右移 | 比特位運算符| | | | | | -z -n | 一元比較 | 字符串是/否為空 | | -e -f -t -x, etc | 一元比較 | 文件測試 | | -lt -gt -le -ge <= >= | 復合比較 | 字符串/整數比較 | | -nt -ot -ef | 復合比較 | 文件測試 | | | | | | & | AND(按位與) | 按位與操作 | | ^ | XOR(按位異或) | 按位異或操作| | \| | OR(按位或) | 按位或操作 | | | | | | && -a | AND(邏輯與) | 邏輯與, 復合比較 | | \|\| -o | OR(邏輯或) | 邏輯或, 復合比較 | | | | | | ? : | if/else三目運算符| C風格運算符 | | = | 賦值 | 不要與test中的等號混淆 | | \*= /= %= += -= <<= >>= &= | 賦值運算 | 先運算后賦值 | | | | | | , | 逗號運算符 | 連接一系列語句 | 實際上,你只需要記住以下規則就可以了: - 先乘除取余,后加減,與算數運算相似 - 復合邏輯運算符,&&, ||, -a, -o 優先級較低 - 優先級相同的操作按*從左至右*順序求值 現在,讓我們利用運算符優先級的知識來分析一下*Fedora Core Linux*中的`/etc/init.d/functions`文件。 ``` while [ -n "$remaining" -a "$retry" -gt 0 ]; do # 初看之下很恐怖... # 分開來分析 while [ -n "$remaining" -a "$retry" -gt 0 ]; do # --condition 1-- ^^ --condition 2- # 如果變量"$remaining" 長度不為0 #+ 并且AND (-a) #+ 變量 "$retry" 大于0 #+ 那么 #+ [ 方括號表達式 ] 返回成功(0) #+ while-loop 開始迭代執行語句。 # ============================================================== # "condition 1" 和 "condition 2" 在 AND之前執行,為什么? # 因為AND(-a)優先級比-n,-gt來得低,邏輯與會在最后求值。 ################################################################# if [ -f /etc/sysconfig/i18n -a -z "${NOLOCALE:-}" ] ; then # 同樣,分開來分析 if [ -f /etc/sysconfig/i18n -a -z "${NOLOCALE:-}" ] ; then # --condition 1--------- ^^ --condition 2----- # 如果文件"/etc/sysconfig/i18n" 存在 #+ 并且AND (-a) #+ 變量 $NOLOCALE 長度不為0 #+ 那么 #+ [ 方括號表達式 ] 返回成功(0) #+ 執行接下來的語句。 # # 和之前的情況一樣,邏輯與AND(-a)最后求值。 # 因為在方括號測試結構中,邏輯運算的優先級是最低的。 # ============================================================== # 注意: # ${NOLOCALE:-} 是一個參數擴展式,看起來有點多余。 # 但是, 如果 $NOLOCALE 沒有提前聲明, 它會被設成null, # 在某些情況下,這會有點問題。 ``` > ![tip](http://tldp.org/LDP/abs/images/tip.gif)為了避免在復雜比較運算中的錯誤,可以把運算分散到幾個括號結構中。 > ``` > if [ "$v1" -gt "$v2" -o "$v1" -lt "$v2" -a -e "$filename" ] > # 這樣寫不清晰... > > if [[ "$v1" -gt "$v2" ]] || [[ "$v1" -lt "$v2" ]] && [[ -e "$filename" ]] > # 好多了 -- 把邏輯判斷分散到多個組之中 > ``` [^1]: Precedence(優先級),根據上下文,與priority含義相近。
                  <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>

                              哎呀哎呀视频在线观看