shell指令碼例題—if、case
阿新 • • 發佈:2021-07-14
目錄
一、例題1
1.1 需求
檢查使用者家目錄中的 test.sh 檔案是否存在,並且檢查是否有執行許可權
1.2 指令碼命令
if [ -e ~/test.sh ];then echo "test.sh存在" if [ -x ~/test.sh ];then echo "test.sh有執行許可權" else echo "無執行許可權" fi else echo "test.sh不存在" fi
1.3 操作驗證
二、例題2
2.1 需求
提示使用者輸入100米賽跑的秒數,要求判斷秒數大於0且小於等於10秒的進入選拔賽,大於10秒的都淘汰,如果輸入其它字元則提示重新輸入;進入選拔賽的成員再進一步判斷男女性別,男生進男生組,女生進女生組,如果輸入錯誤請提示錯誤
2.2 指令碼命令
read -p "輸入100米賽跑的秒數:" num if [ $num -ge 0 -a $num -le 10 ];then echo "進入決賽啦" read -p "請輸入性別:" sex case $sex in 男) echo "進男生組" ;; 女) echo “進女生組” ;; *) echo “提示錯誤,請重新輸入正確性別” esac elif [ $num -gt 10 ];then echo "被淘汰咯" else echo "重新輸入" fi
2.3 操作驗證
三、例題3
3.1 需求
用case語句解壓根據字尾名為 .tar.gz 或 .tar.bz2 的壓縮包到 /opt 目錄
3.2 指令碼命令
case $1 in *.tar.gz) if [ -e $1 ];then tar zxvf $1 -C /opt &> /dev/null else echo "$1不存在" fi ;; *.tar.bz2) if [ -e $1 ];then tar jxvf $1 -C /opt &> /dev/null else echo "$1不存在" fi ;; *) echo "檔案格式不對" esac
3.3 操作驗證
四、例題4
4.1 需求
提示使用者輸入內容,使用if 語句判斷輸入的內容是否為整數
4.2 指令碼命令
read -p "請輸入數字:" num
if [ $num = $(awk "BEGIN {print $num}" | awk -F '.' '{print $1}') ];then
echo "整數"
else
echo "小數"
fi
4.3 操作驗證
五、例題5
5.1 需求
根據上一題再判斷輸入的內容是奇數還是偶數
5.2 指令碼命令
read -p "請輸入數字:" num
if [ $num = $(awk "BEGIN {print $num}" | awk -F '.' '{print $1}') ];then
if [ $(expr $num % 2) = 0 ];then
echo "偶數"
else
echo "奇數"
fi
else
echo "小數"
fi
5.3 操作驗證
六、例題6
6.1 需求
用if 語句判斷主機是否存活
6.2 指令碼命令
ping -c 3 -i 0.5 -w 2 $1 &> /dev/null
if [ $? -eq 0 ];then
echo "$1 is online"
else
echo "$1 is offline"
fi
6.3 操作驗證
七、例題7
7.1 需求
用case語句在/etc/init.d/目錄中寫一個firewalld指令碼,並加入到系統服務管理中
使能夠使用 service firewalld start|stop|restart|status 來管理firewalld服務,
要求如果命令選項不對,則提示 “用法: $0 {start|stop|status|restart}”
7.2 指令碼命令
read -p "輸入start|stop|status|restart:來管理防火牆:" fire
case $fire in
start)
systemctl start firewalld
echo "防火牆開啟"
;;
stop)
systemctl stop firewalld
echo "防火牆關閉"
;;
restart)
systemctl restart firewalld
echo "防火牆重啟"
;;
status)
systemctl status firewalld
echo "防火牆狀態查詢"
;;
*)
echo "用法:$0{start|stop|status|restart}"
esac