<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之旅 廣告
                ##shell十三問之7:()與{}差在哪? -------------------------------- 嗯,這次輕松一下,不講太多... ^_^ 先說一下,為何要用()或者{}好了。 許多時候,我們在shell操作上,需要在 一定的條件下執行多個命令,也就是說, 要么不執行,要么就全執行,而不是每次 依序的判斷是否要執行下一個命令。 或者,要從一些命令執行的先后次序中得到結果, 如算術運算的2*(3+4)那樣... 這時候,我們就可以引入"`命令群組`"(`command group`) 的概念:將許多命令集中處理。 在shell `command line`中,一般人或許不太計較`()`與 `{}`這兩對符號的差異,雖然兩者都可以將多個命令當作群組處理, 但若從技術細節上,卻是很不一樣的: - `()` 將`command group`置于`sub-shell`(`子shell`)中去執行,也稱 `nested sub-shell`。 - `{}` 則是在同一個`shell`內完成,也稱`non-named command group`。 若你對上一章的fork與source的概念還記得的話, 那就不難理解兩者的差異了。 要是在 `command group`中扯上變量及其他環境的修改, 我們可以根據不同的需求來使用`()`或`{}`。 通常而言, 若所作的修改是臨時的,且不想影響原有或以后的設定, 那我們就使用`nested sub-shell`, 即`()`; 反之,則用`non-named command group`, 即`{}`。 是的,光從`command line`來看,`()` 與 `{}`差別就講完了,夠輕松吧~~~, ^_^ 然而,這兩個`meta`用在其他`command meta`或領域中(如Regular Expression), 還是有很多差別的。 只是,我不打算再去說明了,留給讀者慢慢發掘好了... 我這里只想補充一個概念,就是`function`。 所謂`function`,就是用一個名字去命名一個`command group`, 然后再調用這個名字去執行`command group`。 從`non-named command group`來推斷, 大概你也可以推測到我要說的是`{}`了吧?(yes! 你真聰明 ^_^) 在bash中,function的定義方式有兩種: - 方式一: ```shell function function_name { command1 command2 command3 ..... } ``` - 方式二: ```shell function_name () { command1 command2 command3 ...... } ``` 用哪一種方式無所謂, 只是碰到所定義的名稱與現有的命令或者別名沖突的話, 方式二或許會失敗。 但方式二起碼可以少打個`function`這一串英文字符, 對懶人來說(如我),有何樂而不為呢?...^_^ `function` 在一定程度上來說,也可以稱為"函數", 但請不要與傳統編程所使用的"函數"(library)搞混了, 畢竟兩者差異很大。 唯一相同的是,我們都可以隨時用"已定義的名稱"來調用它們... 若我們在shell操作中,需要不斷地重復某些命令, 我們首先想到的,或許是將命令寫成shell腳本(shell script)。 不過,我們也可以寫成function, 然后在command line中打上function_name就可當一般的shell script使用了。 若只是你在shell中定義的`function`, 除了用`unset` function_name取消外, 一旦你退出shell, function也跟著消失。 然而,在script中使用function卻有許多好處, 除了提高整體script的執行性能外(因為已經載入), 還可以節省許多重復的代碼...... 簡單而言,若你會將多個命令寫成script以供調用的話, 那你可以將function看成script中script。... ^_^ 而且通過上一章節介紹的`source`命令, 我們可以自行定義許許多多好用的function, 在集中寫在特定文件中, 然后,在其他的script中用`source`將它們載入,并反復執行。 若你是`RedHat Linux`的使用者, 或許,已經猜出 `/etc/rc.d/init.d/functions`這個文件時啥作用了~~~ ^_^ okay,說要輕松點的嘛,那這次就暫時寫到這吧。 祝大家學習愉快,^_^
                  <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>

                              哎呀哎呀视频在线观看