shell腳本編寫-2

1、條件判斷if語句  

    1)、 單分支

if  判斷條件;then

    條件為真的分支代碼

    fi

2)、雙分支

    if  判斷條件; then 

    條件為真的分支代碼

    else

    條件為假的分支代碼

    fi

逐條件進行判斷,第一次遇為“真”條件時,執行其分支,而后結束整個if語句

例如:if ping -c1 -W2 station1 &> /dev/null; then

echo 'Station1 is UP'

elif grep "station1" ~/maintenance.txt &> /dev/null;then

echo 'Station1 is undergoing maintenance’

else

echo 'Station1 is unexpectedly DOWN!'

exit 1

   fi

2、條件判斷case語句

case 變量引用 in

PAT1)

分支1

;;

PAT2)

分支2

;;

*)

默認分支

;;

Esac

case 支持glob風格的通配符(正則表達式):

*: 任意長度任意字符

?: 任意單個字符

[]:指定范圍內的任意單個字符

a|b: a或b

3、練習題示例

1)、寫一個腳本/root/bin/createuser.sh ,實現如下功能:使用一個用戶名做為參數,如果指定參數的用戶存在,就顯示其存在,否則添加之;顯示添加的用戶的id 號等信息

#!/bin/bash

if grep “^$1\>” /etc/passwd >> /dev/dull;then

echo “the username exists”

exit

else

useradd $1

getent passwd $1

fi

2)、寫個腳本/root/bin/yesorno.sh ,提示用戶輸入yes或no, 并判斷用戶輸入的是yes還是no, 或是其它信息

第一種方法:

#!/bin/passwd

read -p "please input the yes or no:" a

if [ $a == yes ];then

echo "yes"

elif [ $a == y ];then

echo "yes"

elif [ $a == Y ];then

echo "yes"

elif [ $a == YES ];then

echo "yes"

elif [ $a == no ];then

echo "no"

elif [ $a == n ];then

echo "no"

elif [ $a == N ];then

echo "no"

elif [ $a == NO ];then

echo "no"

else

echo "other"

fi    

第二種方法:

#!/bin/bash

read –p “please inout yes or no:” a

case $a in

[yY]|[yY][Ee][sS])

echo “yes”

;;

[Nn]|[Nn][Oo])

echo “no”

;;

*)

echo “other”

;;

esac     

注意case語句:

case支持glob風格的通配符(正則表達式):

*: 任意長度任意字符

?: 任意單個字符

[]:指定范圍內的任意單個字符

a|b: a或b     

第三種方法:

#!/bin/bash

read -p "please inout yes or no:" a

ans=`echo $a|tr 'A-Z' 'a-z'`

if [ $ans == yes -o $ans == y ]

then

echo "yes"

elif [ $ans == no -o $ans == n ]

then

echo "no"

else

echo "other"

fi                                      

3)、寫腳本/root/bin/filetype.sh, 判斷用戶輸入文件路徑,顯示其文件類型(普通,目錄,鏈接,其它類型)

第一種方法:

#!/bin/bash

read -p "please input the file path:" a

[ ! -e $a ] && echo "the file not exist" && exit

if [ -f $a ];then

echo "this file is common"

elif [ -d $a ];then

echo "this file is directory"

elif [ -h $a ];then

echo "this file is link"

else

echo "this file is other"

fi

4)、寫一個腳本/root/bin/checkint.sh, 判斷用戶輸入的參數是否為正整數

首先如何用已有知識表示正整數,注意01也是正整數,可以用正則表達式0*[1-9][0-9]*

#!/bin/bash

read -p "please input the argument:" a

if [[ $a =~ ^0*[1-9][0-9]*$ ]];then

echo "this arg is zzshu"

else

echo "this arg isn't zzshu"

fi

 



原創文章,作者:18612763863,如若轉載,請注明出處:http://www.www58058.com/35572

(0)
1861276386318612763863
上一篇 2016-08-15
下一篇 2016-08-15

相關推薦

  • 馬哥教育網絡班22期+第7周課程練習 忍者亂太郎喻成

    第七周 1、創建一個10G分區,并格式為ext4文件系統;   (1) 要求其block大小為2048, 預留空間百分比為2, 卷標為MYDATA, 默認掛載屬性包含acl;    我個人比較喜歡使用交互式的分區工具fdisk    我以fdisk為例: &n…

    Linux干貨 2016-11-21
  • linux 哲學思想

    一切皆文件:普通文件,目錄、字符設備、塊設備、套接字在linux中都是以文件被對待;雖然類型不通,但是對其提供得卻都是統一套操作界面。 由眾多的單一程序,一個程序只實現一個功能,多個程序組合完成負責任務。單一的程序可以保持高效的執行效率,對于復雜的功能linux通過許多簡單程序組合等方式實現,在保證簡單程序的高效性同時,復雜的程序也必然是高效性的。 文本文件…

    Linux干貨 2017-08-19
  • 系統啟動流程

    CentOS 5和6的啟動流程服務管理Grub管理自制Linux啟動排錯編譯安裝內核 系統啟動流程:  POST –> 讀取BootSequence (BIOS),決定引導次序 –>讀取引導設備的Bootloader(MBR grubstage1–>stage1.5/boot…

    Linux干貨 2016-09-13
  • zabbix+grafana ——小于初始,大于勤拙@時雨擾擾,幾多悵惘,幾多憂思

    前邊一點小總結,純屬回顧啟動大腦所用,畢竟we are no computer! 一個監控系統必須包括4個功能 1)采集數據 2)存儲數據 3)故障報警 4)數據可視化顯示 zabbix作為一個監控系統,當讓也就包含了以上四種zabbix-server-mysql,zabbix-agent,zabbix-get,zabbix-sender,zabbix-we…

    2017-10-09
  • 第九周作業

    1、寫一個腳本,判斷當前系統上所有用戶的shell是否為可登錄shell(即用戶的shell不是/sbin/nologin);分別這兩類用戶的個數;通過字符串比較來實現; #!/bin/bash LOGIN_USER=0 NOLOGIN_USER=0 for SHELLUSER in $(cat /etc/passwd | cut -d : -f 7);do…

    Linux干貨 2017-07-03
  • 文件查找命令

    查找命令:local,find local:非實時查找,通過系統數據庫進行搜索,無法查找到在系統數據庫更新后創建的文件,但是查找速度快,模糊查找(不僅會查找到文件名還會找到文件全路徑) find:在硬盤上進行實時搜索,速度較慢,但是可以找到當前所有的數據 系統數據庫在   /var/lib/mlocate/mlocate.db 系統一般會…

    Linux干貨 2016-08-16
欧美性久久久久