<menu id="ycqsw"></menu><nav id="ycqsw"><code id="ycqsw"></code></nav>
<dd id="ycqsw"><menu id="ycqsw"></menu></dd>
  • <nav id="ycqsw"></nav>
    <menu id="ycqsw"><strong id="ycqsw"></strong></menu>
    <xmp id="ycqsw"><nav id="ycqsw"></nav>
  • 獲取shell腳本參數(linux腳本編寫教程)


    在編寫腳本的過程中,很多時候都需要我們去設置IP地址,密碼之類的變量,為了易用性,我們對這些變量的值都會提供選擇范圍或者設置隨機值以及默認值等。

    那么如果我們要判斷使用腳本的人有沒有輸入密碼應該怎么做呢?下面看一個常見的例子:

    #設置與檢測數據庫root密碼配置

    root=`openssl rand -base64 8|md5sum|cut -c 1-8 `

    read -p “請輸入密碼[ root ],默認[ ${root} ]:” root_pass

    然后我們運行這段:Shell腳本技巧-優雅的判斷用戶輸入值并設置默認值

    運行結果

    此時會出現兩個情況:

    1. 用戶輸入了自定義的密碼
    2. 用戶沒有輸入任何信息

    首先我們對腳本進行完善一下:

    #設置與檢測數據庫root密碼配置

    root=`openssl rand -base64 8|md5sum|cut -c 1-8 `

    echo -e “請輸入密碼[ root ],默認[ ${root} ]:n”

    read root_pass

    echo -e “當前設置的密碼: [ $root_pass ]”

    繼續運行Shell腳本技巧-優雅的判斷用戶輸入值并設置默認值

    執行結果

    此時可以看到,如果直接回車會出現一個空白的現象,而只有用戶輸入的情況下才能出現密碼,看到這有人會說:你都沒設置,有密碼才怪。的確,我還沒設置,下面設置一下:

    #設置與檢測數據庫root密碼配置

    root=`openssl rand -base64 8|md5sum|cut -c 1-8 `

    echo -e “請輸入密碼[ root ],默認[ ${root} ]:n”

    read root_pass

    if [[ -z “$root_pass” ]];then

    root_pass=$root

    fi

    echo -e “當前設置的密碼: [ $root_pass ]”

    然后執行:Shell腳本技巧-優雅的判斷用戶輸入值并設置默認值

    出現了默認(隨機)密碼

    然后到這里就解決了,看到這可能又有人迷惑了?就這?

    別急,繼續往下看。

    上面這個情況是只設置一個變量,但是如果需要設置好多呢?應該怎么辦?一個設置加一個判斷?

    NONONO,這樣太麻煩了,下面介紹一個比較簡單的方法:定義函數

    函數內容如下:

    input_check(){

    #1參未需要設置的變量值[提供默認變量]

    #2參為這個參數的備注信息[例如:數據庫的root密碼]

    #3參為一個隨機/默認值

    #4參為這個變量名

    if [[ -z “$1” ]];then

    echo -e “${red_zt}檢測到${2}沒有輸入,已使用默認值[ ${3} ]${end}”

    eval `echo “$4=$3″`

    else

    eval `echo “$4=$1″`

    fi

    }

    如何使用呢?我們把上面的案例放進去:

    input_check(){

    #1參未需要設置的變量值[提供默認變量]

    #2參為這個參數的備注信息[例如:數據庫的root密碼]

    #3參為一個隨機/默認值

    #4參為這個變量名

    if [[ -z “$1” ]];then

    echo -e “${red_zt}檢測到${2}沒有輸入,已使用默認值[ ${3} ]${end}”

    eval `echo “$4=$3″`

    else

    eval `echo “$4=$1″`

    fi

    }

    input(){

    echo -e “$1”

    read $2

    }

    root=`openssl rand -base64 8|md5sum|cut -c 1-8 `

    input “請輸入密碼[ root ],默認[ ${root} ]:” root_pass

    input_check “$root_pass” “數據庫[root]密碼” “$root” “root_pass”

    然后執行:Shell腳本技巧-優雅的判斷用戶輸入值并設置默認值

    通過函數判斷并設置變量值

    有了這個函數之后,我們每次需要判斷一個值只需要按照傳參要求去調用即可實現默認值和自定義值的配置,例如:

    #設置與檢測數據庫root密碼配置

    root=`openssl rand -base64 8|md5sum|cut -c 1-8 `

    input “請輸入密碼[ root ],默認[ ${root} ]:” root_pass

    input_check “$root_pass” “數據庫[root]密碼” “$root” “root_pass”

    #數據庫初始權限配置

    input “是否關閉[ root ]用戶遠程登錄[ y/n ],默認[ y ]” dislogin

    input_check “$dislogin” “數據庫[ root ]用戶登錄權限” “y” “dislogin”

    #是否刪除測試數據庫

    input “是否刪除[ test ]數據庫[ y/n ],默認[ y ]” rm_db

    input_check “$rm_db” “刪除[ test ]數據庫確認” “y” “rm_db”

    #結果匯總

    red_z_green_z “數據庫[ root ]用戶密碼:” “[ $root_pass ]”

    red_z_green_z “允許[ root ]遠程登錄:” “[ $dislogin ]”

    red_z_green_z “是否刪除[ test ]數據庫:” “[ $rm_db ]”

    input “是否繼續[回車繼續]” Y

    是不是打開了新大陸呢?其實還可以繼續改進這個函數,想了解更多的話關注我等待更新吧。

    版權聲明:本文內容由互聯網用戶自發貢獻,該文觀點僅代表作者本人。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如發現本站有涉嫌抄襲侵權/違法違規的內容, 請發送郵件至 舉報,一經查實,本站將立刻刪除。

    發表評論

    登錄后才能評論
    国产精品区一区二区免费