shell指令碼程式設計高階(一)

2021-08-26 18:00:20 字數 2409 閱讀 4033

可以巢狀

分支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...