日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

在編寫腳本的過程中,很多時候都需要我們去設置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

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

如果這篇文章能夠幫助到你的話請給個支持,來個三連吧;

如果你還有更好的解決方法可以在評論區展現你的強大技術能力,讓大家一起學習。

關注我,帶你進入Shell腳本的世界,點擊下方“了解更多”即可看到我的腳本庫(有很多不錯的函數)。

分享到:
標簽:Shell
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定