可以巢狀
分支if 判斷條件;then
條件為真的分支**
fiif 判斷條件; then
條件為真的分支**
else
條件為假的分支**
fiif 判斷條件1; then
條件1為真的分支**
elif 判斷條件2; then
條件2為真的分支**
elif 判斷條件3; then
條件3為真的分支**
else
以上條件都為假的分支**
fi格式
case 變數 in
pat1)
分支1pat2)
分支22. 對某個字元或值做判斷,看它是否與某個值相匹配
3. case支援glob風格的萬用字元
先對比一下if和case
1. 編寫指令碼/root/bin/yesorno.sh,提示使用者輸入yes或no,並判斷使用者輸入的是yes還是no,或是其它資訊。
先用if來做
#!bash/bin
read -p "please input answer:" ans
if [[ $ans =~ ^[yy]([ee][ss])?$ ]];then
echo yes
elif [[ $ans =~ ^[nn][oo]?$ ]];then
echo no
else echo "wrong"
fi
再來看case
#!/bin/bash
read -p ":" ans
case $ans in
[yy]|[yy][ee][ss])
echo yes
;;[nn]|[nn][oo])
echo no
;;*) echo bad input;
esac
對於這兩種條件判斷, 我覺得if的適用性要更廣泛;而case在判斷變數是否為某些數字或是某些字元時很方便。
2. 編寫指令碼/root/bin/createuser.sh,實現如下功能:使用乙個使用者名稱做為引數,如果指定引數的使用者存在,就顯示其存在,否則就新增;顯示新增的使用者的id號等資訊。
#!/bin/bash
read -p "please input username:" username
#建立輸入的使用者
useradd $username &> /dev/null
#判斷建立操作的返回值是否為0來,為0說明建立成功,該使用者之前不存在;不為0說明創
建失敗,該使用者已存在
if [ $? -eq 0 ];then
echo "$username is created" && id $username
else
echo "the user already exists"
fi
3. 編寫指令碼/root/bin/filetype.sh,判斷使用者輸入檔案路徑,顯示其檔案型別(普通,目錄,鏈結,其它檔案型別)
#!/bin/bash
read -p ":" a
#先判斷使用者輸入的內容是否存在
ls $a &> /dev/null
if [ $? -eq 0 ];then
if [ -d "$a" ] ;then
echo "$a is directory"
elif [ -l "$a" ] ;then
echo "$a is a link"
elif [ -f "$a" ] ;then
echo "$a is a common file"
else
echo "$a is other type"
fielse
echo "waht you input is not exist"
exit 1
fi
4. 編寫指令碼/root/bin/checkint.sh,判斷使用者輸入的引數是否為正整數
#!/bin/bash
read -p "please input a digit:" num
#當然,01、001這些也可以是正整數,但是標準不同結果不同,我在這裡直接剔除了01、001這種標準,採用1這樣的標準
if [[ $num =~ (^[1-9][0-9]*$) ]];then
echo "this digit is positive integer"
else
echo "this digit is not positive integer"
fi
Shell指令碼 程式設計高階03
1 每隔 3 秒鐘到系統上獲取已經登入的使用者的資訊 如果發現使用者 hacker 登入,則將登入時間和主機記錄於日誌 var log login.log 中,並退出指令碼 bin bash while do echo date f t no information if who grep hack...
Shell指令碼 程式設計高階08
1 編寫函式實現兩個數字做為引數,返回最大值maxnum bin bash functions read p please input first digits num1 read p please input second digits num2 max maxnum num1 num2 if m...
7 Shell指令碼程式設計高階
1 編寫指令碼實現傳入程序pid,檢視對應程序 proc下的cpu 記憶體指標。bin bash color red start 1 31m color red end 0m read p please input the pid to check cpu mem infomation pid ch...