亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > Linux Shell > 正文

詳解shell腳本中的case條件語句介紹和使用案例

2020-07-26 23:25:41
字體:
來源:轉載
供稿:網友

#前言:這篇我們接著寫shell的另外一個條件語句case,上篇講解了if條件語句。case條件語句我們常用于實現系統服務啟動腳本等場景,case條件語句也相當于if條件語句多分支結構,多個選擇,case看起來更規范和易讀

#case條件語句的語法格式

case "變量" in 值1) 指令1... ;; 值2) 指令2... ;; *) 指令3...esac

#說明:當變量的值等于1時,那么就會相應的執行指令1的相關命令輸出,值等于2時就執行指令2的命令,以此類推,如果都不符合的話,則執行*后面的指令,要注意內容的縮進距離

#簡單記憶

case "找工作條件" in 給的錢多) 給你工作... ;; 給股份) 給你工作... ;; 有發展前景) 可以試試... ;; *) bye bye !!esac

實踐1.根據用戶的輸入判斷用戶輸入的是哪個數字,執行相應動作

#如果用戶輸入的是1-9的任意一個數字,則輸出對應輸入的數字,如果是別的字符,則提示輸出不正確并退出程序

[root@shell scripts]# cat num.sh #!/bin/bash#create by guoke#function number inputread -p "please input a number:" num #打印信息提示用戶輸入,輸入信息賦值給num變量case "$num" in 1) echo "The num you input is 1" ;; [2-5])   echo "The num you input is 2-5" ;; [6-9])   echo "The num you input is 6-9" ;; *)   echo "please input number[1-9] int"    exit;esac

#說明:使用read讀取用戶輸入的數據,然后使用case條件語句進行判斷,根據用戶輸入的值執行相關的操作

#執行效果

[root@shell scripts]# sh num.sh
please input a number:1
The num you input is 1
[root@shell scripts]# sh num.sh
please input a number:3
The num you input is 2-5
[root@shell scripts]# sh num.sh
please input a number:4
The num you input is 2-5
[root@shell scripts]# sh num.sh
please input a number:8
The num you input is 6-9
[root@shell scripts]# sh num.sh
please input a number:a
please input number[1-9] int

實踐2.打印一個如下的水果菜單

(1) banana

(2) apple

(3)orange

(4) cherry

#腳本編寫

[root@shell scripts]# cat menu.sh #!/bin/bash#create by guoke#function print menuRED_COLOR='/E[1;31m'GREEN_COLOR='/E[1;32m'YELLOW_COLOR='/E[1;33m'BLUE_COLOR='/E[1;34m'RES='/E[0m'echo ' #使用echo打印菜單############################# 1.banana 2.apple 3.pear 4.cherry#############################'read -p "please select a num:" numcase "$num" in 1)   echo -e "${YELLOW_COLOR} banana ${RES}" ;; 2)   echo -e "${RED_COLOR} apple ${RES}" ;; 3)   echo -e "${GREEN_COLOR} pear ${RES}" ;; 4)   echo -e "${BLUE_COLOR} cherry ${RES}" ;; *)   echo "please input {1|2|3|4}"esac

#說明:定義顏色,使用read讀取用戶輸入的數據,然后使用case條件語句進行判斷,根據用戶輸入的值執行相關的操作,給用戶輸入的水果添加顏色

#擴展:輸出菜單的另外種方式

cat<<-EOF=============================== 1.banana 2.apple 3.pear 4.cherry===============================EOF

#執行效果

#如果輸入不正確或者不輸入的話就打印幫助

[root@shell scripts]# sh menu.sh #############################1.banana2.apple3.pear4.cherry#############################please select a num:please input {1|2|3|4} 

#輸入選項中的數字,打印相關信息

實踐3.開發nginx啟動腳本

#主要思路:

#1.主要通過判斷nginx的pid文件有無存在,通過返回值查看有沒有運行

#2.通過case語句獲取參數進行判斷

#3.引入系統函數庫functions中的action函數

#4.對函數及命令運行的返回值進行處理

#5.設置開機自啟動

#附上nginx編譯安裝過程

#!/bin/bashyum install gcc pcre pcre-devel wget openssl openssl-devel.x86_64 -y mkdir -p /home/demo/toolscd /home/demo/tools/wget -q http://nginx.org/download/nginx-1.6.3.tar.gzuseradd nginx -s /sbin/nologin -Mtar xf nginx-1.6.3.tar.gz cd nginx-1.6.3/./configure --user=nginx --group=nginx --prefix=/application/nginx --with-http_stub_status_module --with-http_ssl_modulemakemake installln -s /application/nginx-1.6.3 /application/nginx/ #做軟連接/application/nginx/sbin/nginx -t #檢查語法/application/nginx/sbin/nginx #啟動服務

#腳本編寫

[root@shell init.d]# chmod +x /etc/init.d/nginxd[root@shell init.d]# cat nginxd #!/bin/bash#chkconfig: 2345 40 98 #設定2345級別,開機第40位啟動腳本,關機第98位關閉腳本#create by guoke#email:1075792988@qq.com#function nginx start scripts[ -f /etc/init.d/functions ] && source /etc/init.d/functions #引入系統函數庫PIDFILE=/application/nginx/logs/nginx.pid #定義PID文件路徑NGINX=/application/nginx/sbin/nginx #定義啟動命令路徑value(){ #定義返回值函數 RETVAL=$? if [ $RETVAL -eq 0 ];then   action "Nginx is $1" /bin/true else   action "Nginx is $1" /bin/true fi}start(){ #定義啟動函數 if [ -f $PIDFILE ];then #判斷PIDFILE存不存在,存在就打印運行,否則就啟動   echo "Nginx is running" else   $NGINX   value start #調用返回值函數 fi}stop(){ #定義停止函數 if [ ! -f $PIDFILE ];then #也是通過判斷PID文件是否存在然后進行相關操作   echo "Nginx not running" else   $NGINX -s stop   value stop fi}reload(){ #定義重啟函數 if [ ! -f $PIDFILE ];then   echo "not open $PIDFILE no such directory" else   $nginx -s reload   value reload fi}case "$1" in #使用case接收腳本傳參的字符串 start) #如果第一個參數為start,調用start函數   start ;; stop) #如果第一個參數為stop,調用stop函數   stop ;; reload)   stop   sleep 1   start ;; *)   echo "USAGE:$0 {stop|start|reload}"   exit 1esac

#執行效果

[root@shell init.d]# sh nginx stop
Nginx is stop [ OK ]
[root@shell init.d]# sh nginx start
Nginx is start [ OK ]
[root@shell init.d]# sh nginx reload
Nginx is stop [ OK ]
Nginx is start [ OK ]

實踐4.開發跳板機

#要求用戶登錄到跳板機后只能執行管理員給定的選項動作,不能中斷腳本而到跳板機服務器上執行任何系統命令

#思路

1.首先做好ssh key驗證登錄
2.實現遠程連接菜單選擇腳本
3.利用Linux信號防止用戶在跳板機上操作
4.用戶登錄后就調用腳本

#操作過程

3.1.做ssh免密鑰登錄,發送到各個主機,如果機器多的話可以使用腳本進行循環發送

[demo@shell ~]$ ssh-keygen -t dsa -P "" -f ~/.ssh/id_dsa Generating public/private dsa key pair.Enter file in which to save the key (/home/demo/.ssh/id_dsa): Created directory '/home/demo/.ssh'.Your identification has been saved in /home/demo/.ssh/id_dsa.Your public key has been saved in /home/demo/.ssh/id_dsa.pub.The key fingerprint is:SHA256:BTFfcC2hMKBzuZeUYylC3qgza7z4X6j3RBlwq8Beoak demo@shellThe key's randomart image is:+---[DSA 1024]----+| + o.*...+o || . = B o O +. . || = B B * + . || o + = B + ||E = . + S || . + o .  || + . o  || o o.o  ||..+o...  |+----[SHA256]-----+#命令說明:一鍵生成密鑰,不用按回車。-t:指定要創建的密鑰類型,-P:提供舊密碼,空表示不需要密碼,-f:指定位置#將公鑰拷貝到其他服務器的demo用戶[demo@shell ~]$ ssh-copy-id -i .ssh/id_dsa.pub "demo@192.168.86.129"[demo@shell ~]$ ssh-copy-id -i .ssh/id_dsa.pub "demo@192.168.86.130"[demo@shell ~]$ ssh-copy-id -i .ssh/id_dsa.pub demo@192.168.86.131

#3.2.編寫腳本

[root@shell scripts]# cat tiaobanji.sh #!/bin/bashtrapper(){ #定義屏蔽信號函數 trap '' INT QUIT TSTP TERM HUB}menu(){ #定義菜單列表函數 cat<<-EOF #加-后面的EOF就可以不用頂格==============Host List============== 1) 192.168.86.129 2) 192.168.86.130 3) 192.168.86.131 4) 192.168.86.132 5) exit===================================== EOF}USER=demohost(){ #定義主機列表函數 case "$1" in 1) ssh $USER@192.168.86.129 ;; 2) ssh $USER@192.168.86.130 ;; 3) ssh $USER@192.168.86.131 ;; 4) ssh $USER@192.168.86.132 ;; 5) exitesac}main(){ #定義主函數 while : #while循環,一直循環 do trapper #調用trapper函數 clear #清屏 menu #調用菜單函數 read -p "please select a num:" num #獲取用戶輸入 host $num #調用主機列表函數和傳入的參數,進行遠程登錄 done}main #調用主函數

#3.3.編寫腳本進行判斷,判斷是否是root用戶登錄,如果不是root用戶就執行腳本,彈出跳板機界面

[root@shell ~]# cd /etc/profile.d/[root@shell profile.d]# cat jump.sh #!/bin/bash[ $UID -ne 0 ] && . /scripts/tiaobanji.sh

#3.4.測試

#登錄demo普通用戶輸入密碼的時候就會直接跳到選項卡頁面了

#選項卡頁面

==============Host List==============1) 192.168.86.1292) 192.168.86.1303) 192.168.86.1314) 192.168.86.1325) exit=====================================please select a num:1 #進行選擇Last login: Tue Mar 31 23:48:33 2020 from 192.168.86.128[demo@mysql ~]$

#3.5.提示:跳板機的安全

1.禁止跳板機可以從外網IP進行登錄,只能從內網IP登錄
2.其他服務器也限制只能內網IP登錄,同時禁止root登錄,做完ssh key認證,將密碼登錄禁止,通過免密碼登錄到其他服務器

#總結:if條件語句主要用于取值判斷、比較,應用比較廣,case條件語句主要是寫服務的啟動腳本,各有各的優勢。好了,shell腳本的條件語句就講解到這里了,接下來會繼續寫shell腳本的循環(包括for,while等),如果寫的不好的地方還望指出,多多交流提高,下次再會。。。

到此這篇關于詳解shell腳本中的case條件語句介紹和使用案例的文章就介紹到這了,更多相關shell case條件語句內容請搜索武林網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持武林網!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩av在线资源| 亚洲自拍高清视频网站| 国产欧美va欧美va香蕉在| 亚洲成人在线视频播放| xxxx性欧美| 亚洲第一偷拍网| 欧洲永久精品大片ww免费漫画| 欧美乱妇40p| 国内精品久久久久久| 欧美成人国产va精品日本一级| 国产一区二区丝袜| 国产噜噜噜噜噜久久久久久久久| 精品国产91乱高清在线观看| 国产成人拍精品视频午夜网站| 日韩精品一二三四区| 国产精品久久久久99| 国产成人精品亚洲精品| 全亚洲最色的网站在线观看| 日韩高清免费观看| 欧美日韩美女在线观看| 成人xvideos免费视频| 久久久久久久成人| 成人欧美一区二区三区在线湿哒哒| 久久久爽爽爽美女图片| 亚洲国产美女精品久久久久∴| 欧美午夜www高清视频| 国产精品狠色婷| 亚洲国产成人爱av在线播放| 韩国精品美女www爽爽爽视频| 成人乱色短篇合集| 国产精品自产拍在线观| 92国产精品久久久久首页| 久久久久久久久久久免费| 成人久久久久爱| 久久免费视频这里只有精品| 亚洲午夜av久久乱码| 韩国19禁主播vip福利视频| 亚洲福利视频久久| 亚洲精品资源在线| 国产午夜精品全部视频在线播放| 在线精品高清中文字幕| 九九热在线精品视频| 亚洲第一精品夜夜躁人人躁| 97成人在线视频| 国产精品美乳在线观看| 欧美黄色成人网| 国产精品久久久久久超碰| 自拍视频国产精品| 操人视频在线观看欧美| 国产精品白嫩美女在线观看| 亚洲国产日韩一区| 亚洲欧美另类中文字幕| 97人洗澡人人免费公开视频碰碰碰| 亚洲jizzjizz日本少妇| 欧美最猛性xxxxx亚洲精品| 国产精品视频999| 亚洲跨种族黑人xxx| 亚洲国产精品va| 国产精品欧美在线| 亚洲欧美中文日韩v在线观看| 国产精品劲爆视频| 这里只有精品视频在线| y97精品国产97久久久久久| 91精品国产一区| 国产精品福利久久久| 日韩美女在线看| 精品国产视频在线| 国产乱人伦真实精品视频| 久久九九全国免费精品观看| 成人深夜直播免费观看| 国产精品第一页在线| 亚洲伊人一本大道中文字幕| 中文字幕不卡av| 一区二区三区视频免费在线观看| 欧美美女操人视频| 丝袜美腿精品国产二区| 国产一区二中文字幕在线看| 午夜精品蜜臀一区二区三区免费| 欧美激情精品在线| 国产欧美一区二区三区在线看| 日本韩国欧美精品大片卡二| 中文字幕一区日韩电影| 亚洲精品第一国产综合精品| 亚洲欧美国内爽妇网| xvideos国产精品| 欧美日韩免费在线观看| www.日本久久久久com.| 国产精品wwww| 成人精品视频久久久久| 2019亚洲男人天堂| 曰本色欧美视频在线| 国产成人精品a视频一区www| 亚洲欧美激情精品一区二区| 亚洲电影免费观看| 日韩成人中文字幕| 亚洲国产美女精品久久久久∴| 中文字幕亚洲天堂| 国产性猛交xxxx免费看久久| 成人h视频在线观看播放| 欧美在线欧美在线| 成人午夜高潮视频| 精品视频中文字幕| 国产精品视频一| 日韩视频―中文字幕| 亚洲欧美日韩综合| 亚洲免费精彩视频| 精品国产91久久久| 久久久精品在线| 日韩在线观看网站| 欧美视频不卡中文| 精品欧美aⅴ在线网站| 欧美影院成年免费版| 热99精品里视频精品| 亚洲欧美成人一区二区在线电影| 亚洲欧美第一页| 91精品国产91久久久| 亚洲国产欧美在线成人app| 精品成人国产在线观看男人呻吟| 欧美国产日韩xxxxx| 欧美网站在线观看| 国产精品黄页免费高清在线观看| 欧美日韩精品国产| 精品国产一区二区三区久久狼5月| 欧美激情视频播放| 欧美激情免费看| 91免费在线视频网站| 欧美影院成年免费版| 亚洲精品久久久久久下一站| 久久久综合免费视频| 中文字幕精品一区二区精品| 欧美激情精品久久久久久久变态| 国产精品网红直播| 久久久久久久久久久免费| 中文字幕亚洲无线码a| 国产有码一区二区| 国产成人高清激情视频在线观看| 日韩精品免费在线观看| 国产成人精品最新| 久久人人爽人人爽人人片av高请| 欧美特级www| 亚洲精品理论电影| 色婷婷av一区二区三区久久| 欧美乱妇高清无乱码| 欧美裸体视频网站| 亚洲国产高清福利视频| 久久久久久综合网天天| 亚洲人成电影网站色| 91精品中文在线| 欧美在线性爱视频| 热久久免费国产视频| 国产精品久久久av| 国语自产精品视频在线看抢先版图片| 亚洲视频在线看| 亚洲一级片在线看| 日韩av最新在线| 日韩欧美一区二区三区久久| 欧美一二三视频| 欧美野外wwwxxx| 亚洲一区av在线播放| 精品国产欧美成人夜夜嗨| 亚洲一区中文字幕| 亚洲精品视频久久| 45www国产精品网站| 亚洲人av在线影院|