4案例4:編寫一個判斷腳本
4.1 問題
本例要求在虛擬機server0上創建/root/foo.sh腳本,任務目標如下:
- 當運行/root/foo.sh redhat,輸出爲fedora
- 當運行/root/foo.sh fedora,輸出爲redhat
- 當沒有任何參數或者參數不是redhat或者fedora時,其錯誤輸出產生以下信息:/root/foo.sh redhat|fedora
4.2方案
Shell腳本中執行條件測試的方法:
- 任何一條命令行
- test 測試表達式
- [ 測試表達式 ]
常用的test測試選項: - 文件狀態測驗 -f、-d、-e、-r、-w、-x
- 整數值比較 -gt、-ge、-eq、-ne、-lt、-le
- 字符串比較 ==、!=
- 取反操作
多分支if選擇結構:
if 條件測試操作1;then
命令序列1....
elif 條件測試操作2;then
命令序列2....
else
命令序列3....
fi
4.3步驟
實現此案例需要按照如下步驟進行。
步驟一:編寫foo.sh判斷腳本
1)編寫腳本代碼
[root@server0 ~]# vim /root/foo.sh
#!/bin/bash
if [ $# -eq 0 ];then
echo "/root/foo.sh redhat|fedora" >&2
elif [ $1 = "redhat" ];then
echo "fedora"
elif [ $1 = "fedora" ];then
echo "redhat"
else
echo "/root/foo.sh redhat|fedora" >&2
fi
2)添加執行權限
[root@server0 ~]# chmod +x /root/foo.sh
步驟二:測試foo.sh判斷腳本
1)測試提供正確參數的情況
[root@server0 ~]# /root/foo.sh redhat
fedora
[root@server0 ~]# /root/foo.sh fedora
Redhat
2)測試提供非預期參數的情況
[root@server0 ~]# /root/foo.sh ubuntu
/root/foo.sh redhat|fedora
3)測試不提供參數的情況
[root@server0 ~]# /root/foo.sh
/root/foo.sh redhat|fedora