<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位置變量** ## **1.位置變量說明** ``` $0 獲取當前執行的腳本文件名 $n 獲取當前執行的腳本的第n個參數,n大于10要用大括號,用于傳參 $# 獲取當前腳本所有后面所接參數的總個數 $* 獲取當前腳本所有傳參的參數 $@ 獲取當前腳本所有傳參的參數 ``` > $*和$@不加雙引號時無區別,加雙引號時,$"*"將所有參數視為單個字符串,$"@"將所有字符串視為不同的獨立字符串 ## **2.$0、$#、$n聯合演示** * cat test.sh ``` if [ $# -ne 2 ] #如果傳入參數不是2個 then echo "/bin/sh $0 arg1 arg2" #提示用戶腳本路徑和用法 exit 1 #退出并返回1 fi echo $1 $2 #滿足2個參數則執行命令 ``` * sh test.sh `/bin/sh test.sh arg1 arg2. `不加參數,提示用戶用法 * sh test.sh ni wo `ni wo` 正確執行結果 # **二、shell狀態變量** ## **1.特殊狀態變量** |變量|用途| |---|---| |$?|獲取上一個指令的執行狀態返回值(0表示成功,非0表示失敗,很常用)| |$$|獲取當前執行的腳本的進程號(PID)| |$!|獲取上一個在后臺工作的進程的進程號(PID)| |$_|獲取在此之前執行的命令或腳本的最后一個參數 | ## **2.$?用途詳解** 1. 不同命令的執行結果中,$?的返回值不盡相同,但常用的就是0和非0兩種狀態,0表示成功,非0表示失敗,可以通過獲取返回值,來確定程序是否執行成功。 2. 在對數據進行備份時,在執行完關鍵命令后,獲取返回值,來確定命令是否成功,備份數據是否完成 * **在企業場景中,$?的用法如下** * 判斷命令、腳本或函數等程序是否執行成功 * 坐在腳本中執行“exit 數字”,則會返回這個數字給$?變量 * 如果是再函數中,則通過“return 數字”吧這個數字傳給$?S ## **3.$?腳本案例講解** * sed -n '63,73p' /etc/init.d/rpcbind ``` stop() { echo -n $"Stopping $prog: " killproc $prog RETVAL=$? #將$?的值賦值給變量RETVAL echo [ $RETVAL -eq 0 ] && { #判斷當返回值為0是,執行下面操作 rm -f /var/lock/subsys/$prog rm -f /var/run/rpcbind* } return $RETVAL ``` > 如果返回值不為0,不執行命令,將返回值傳遞給stop腳本 # **三、shell特殊變量** ## **1.語法和功能** | 變量名| 變量作用說明 | | --- | --- | | ${var:-word} | 如果變量未賦值或為空,則用word值替代 | | ${var:=word} | 如果變量未賦值或為空,則用word值賦值并替代 | | ${var:+word} | 如果變量已賦值或為不為空,則用word值替代 | | ${var:?word}} | 如果變量未賦值或為空,則用word值作為錯誤輸出 | > 冒號非必須,省略冒號,則只針對未賦值的變量,加上冒號,就包括為空的變量 ## **2.演示案例** * cat /server/scripts/t2.sh ``` echo 'echo ${var:-ttt}-->' ${var:-ttt} echo 'echo $var-->' $var echo 'echo ${var:=ttt}-->' ${var:=ttt} echo 'echo $var-->' $var echo 'echo ${var:+MMM}-->' ${var:+MMM} echo 'echo $var-->' $var echo 'unset var and echo ${var:?the error}-->' unset var echo ${var:?the error} ``` * sh /server/scripts/t2.sh ``` echo ${var:-ttt}--> ttt echo $var--> #變量未賦值,則用ttt代替輸出,查看變量仍然未賦值 echo ${var:=ttt}--> ttt echo $var--> ttt #變量未賦值,則用ttt代替輸出,查看變量已被賦值 echo ${var:+MMM}--> MMM echo $var--> ttt #變量已賦值,則用MMM代替輸出,查看變量仍然為ttt unset var and echo ${var:?the error}--> /server/scripts/t2.sh: line 9: var: the error #變量未賦值則輸出定義的報警信息 ``` ## **3.企業工作用途** 在企業中,針對目錄路徑等的處理就可以上述變量不存在則賦值的方式,防止因目錄路徑不存在而導致的異常,特別是針對變量的刪除操作,這種方式很有用,否則刪除的變量不存在時,可能 導致未知的危險 `find ${path:-/tmp} -name "*.tar.gz" -type f -mtime +7|xargs rm -f ` > 如上命令,當路徑變量不存在時,用/tmp路徑代替
                  <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>

                              哎呀哎呀视频在线观看