<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之旅 廣告
                # **一、概念和語法** ## **1.作用** ### 1) 概述 shell中的函數類似于命令行的別名,通過把一段代碼定義為一個函數體,在其他地方調用該函數時就調用了整段代碼。也可以把函數單獨的寫在一個文件中,當需要調用函數時,再加載進來使用 ### 2) 優勢 * 把相同的程序段定義成函數,可以減少整個程序的代碼量,提升開發效率 * 增加程序的可讀性,易讀性,提升管理效率 * 可以實現程序功能模塊化,使得持續具備通用性和可移植性 ## **2.語法** ### 1) 標準寫法: ```shell function 函數名 () { 指令...... return n } ``` ### 2) 簡化寫法 ```shell 函數名 () { 指令...... return n } ``` ### 3) 函數的執行 函數分為最基本的函數和可以傳參的函數兩種,執行方式分別如下: * 函數名 * 函數名 參數1 參數2 函數后接參數的說明: 1. shell的位置參數`($1、$2、...、$#、#*、$?及$@)`都可以作為函數的參數來使用 1. 此時父腳本的參數臨時地被函數參數所掩蓋或隱藏 2. $0比較特殊,它仍然是父腳本的名稱 3. 當函數執行完成時,原理的命令行腳本的參數即可恢復 4. 函數的參數變量是再函數體里面定義的 ## **5. 函數的重要說明** * 執行shell函數時,函數名前的function和函數后的小括號都不要帶 * 函數的定義必須在要執行的程序前面定義或加載 * shell執行系統中的各種程序的順序:系統別名-->函數-->系統命令-->可執行文件 * 函數執行時,會和調用他的腳本共用變量,也可以為函數設置局部變量和特殊位置參數 * shell函數中,return命令的功能和exit類似,return的作用是退出函數,而exit的作用是退出腳本 * return語句會返回退出值給調用函數的當前程序,而exit會返回一個退出值給執行程序的當前shell * 如果將函數存放在獨立的文件中,被腳本加載使用時,需要使用source或"."來加載 * 在函數內一般使用local定義局部變量,這些變量離開函數后就會消失 # **二、基礎實踐** ## **1. 最簡單函數的創建和調用** * `cat /server/scripts/b3.sh` ```shell #!/bin/sh noahboy () { echo "this is noahboy" } noahgirl () { echo "this is noahgirl" } noahboy noahgirl ``` >* `sh /server/scripts/b3.sh ` this is noahboy this is noahgirl >>分別創建了兩個函數,然后分別進行了調用,輸出結果就輸出這兩個函數的執行結果 ## **2. 將函數寫入系統函數文件中再調用** /etc/init.d/functions文件是linux系統函數庫文件,可以先將函數在此文件創建好,然后在腳本中調用該文件就行了,該文件里有很多默認的函數可供調用 * 先將noahboy函數寫入函數文件中 ```shell cat >>/etc/init.d/functions <<EOF noahboy () { echo "this is noahboy." } EOF ``` * 新編寫腳本調用并執行 ```shell cat >/server/scripts/b3.sh <<EOF #!/bin/sh [ -f /etc/init.d/functions ] && . /etc/init.d/functions || exit 1 noahboy EOF ``` > * `sh /server/scripts/b3.sh ` this is noahboy. >>先判斷函數文件存在不,存在的話通過"."加載函數文件,再調用函數 ## **3. 函數傳參** ```SHELL cat >/server/scripts/b3.sh <<EOF #!/bin/sh noahgirl () { echo "i am olgirl,you are $1" } noahgirl $1 EOF ``` > * `sh /server/scripts/b3.sh man` i am olgirl,you are man >>noahgirl中使用參數$1,然后調用函數是也指定了$1,此時執行腳本并且傳參時,$1會傳遞到函數內部執行,所以結果如上
                  <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>

                              哎呀哎呀视频在线观看