<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12
      代碼改變世界

      shell腳本中main函數中$#獲取不到腳本傳入參數個數淺析

      2024-03-14 11:01  瀟湘隱者  閱讀(353)  評論(0)    收藏  舉報

      Linux的shell腳本,有時候我們在運行shell腳本時會給腳本傳入參數,出于邏輯上的嚴謹,在腳本中可能會做一些邏輯判斷或處理,例如判斷腳本傳入參數的個數。一般我們會用$#獲取傳入參數的個數,假如,我們在shell腳本的main函數中去判斷腳本傳入參數的個數,類似如下所示:

      .........
      function main()
      {
          if [ $# != 1 ]; then
            echo "This script must be run with one parameter"
            echo "Usage:mysql_slowlog_monitor.sh 6h"
            exit 1
          fi

          check_enviroment;
          send_slow_rpt;
          return 0;
      }

      main;

      如果你去調試這個shell腳本的話,就會發現main函數中$#的值永遠是0, 如果將腳本調整一下,將判斷傳入參數個數的腳本放到main函數外(不能放在其它函數中),如下所示,這樣就Ok了

      .............

      if [ $# != 1 ]; then
        echo "This script must be run with one parameter"
        echo "Usage:mysql_slowlog_monitor.sh 6h"
        exit 1
      fi

      .............
      function main()
      {
          check_enviroment;
          send_slow_rpt;
          return 0;
      }

      main;

      那么為什么會出現這種情況呢?在解答這個問題前,我們先來了解一下$#的用途,$#表示腳本傳入參數的個數,也表示一個函數(function)調用時,傳入函數的參數(arguments)個數,而且它也是有作用域范圍,如果在函數(function)內部的話,它表示的函數調用時,傳入參數的個數。

      那么再來解答這個問題,上面shell腳本中,main函數調用時寫法為main;意味著函數調用時沒有傳入任何參數,所以$#在main中值為0,而在腳本mysql_slowlog_monitor.sh中獲取傳入的參數個數,應該在腳本中,而且在腳本中的函數外面獲取它的值。

      那么怎么解決這個問題呢?

      解決方案1:

      將判斷腳本調用時傳入的參數的腳本放到函數外面,就像上面示例腳本那樣處理。

      解決方案2:

      借助全局變量,先在函數外獲取腳本傳入參數的個數,將其賦值為全局變量,然后在mian函數中,進行邏輯判斷和處理。

      .............
      ARGS=$#
      .............
      function main()
      {
          if [ $ARGS != 1 ]; then
            echo "This script must be run with one parameter"
            echo "Usage:mysql_slowlog_monitor.sh 6h"
            exit 1
          fi
          check_enviroment;
          send_slow_rpt;
          return 0;
      }

      main;
      主站蜘蛛池模板: 欧美日韩中文国产一区| 国产精品一区中文字幕| 亚洲中文久久久精品无码| 伊在人间香蕉最新视频| 天天做天天爱夜夜爽导航| 亚洲深深色噜噜狠狠网站| 亚洲区福利视频免费看| 国产寡妇偷人在线观看| 极品人妻少妇一区二区三区| 国产免费午夜福利在线播放| 国产爆乳无码av在线播放| 亚洲熟妇一区二区三个区| 久久精品娱乐亚洲领先| 亚洲欧美综合中文| 欧洲码亚洲码的区别入口| 综合偷自拍亚洲乱中文字幕| 高中女无套中出17p| 国产精品成人久久电影| 日韩无人区码卡1卡2卡| 强伦姧人妻免费无码电影| 3d无码纯肉动漫在线观看| 国产精品久久久久久久久人妻| 国内精品卡一卡二卡三| 国产欧美在线一区二区三| 小污女小欲女导航| 国产精品SM捆绑调教视频| 日韩精品国产二区三区| 久久人爽人人爽人人片av| 99RE6在线观看国产精品| 国产丝袜在线精品丝袜| 亚洲日韩性欧美中文字幕| 日韩精品中文字幕国产一| 午夜dv内射一区二区| 国产精品久久久久久久久鸭| 最新亚洲人成网站在线影院| 久久中文字幕一区二区| 中文字幕日韩区二区三区| 2021av在线| 国产自产av一区二区三区性色| 亚洲精品国产中文字幕| 欧日韩无套内射变态|