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 09:22
下一篇 2016-08-15 09:24

相關推薦

  • 搭建yum倉庫

    搭建yum倉庫 背景: 在學習完如何搭建yum倉庫后,覺得搭建yum倉庫很有意義,將自己學習中的感悟和理解記錄下來,以備日后復習。 介紹: yum:全稱是Yellow dog Updater, Modified。它是一個在Fedora和RedHat以及CentOS中的Shell前端軟件包管理器?;赗PM包管理,能夠從指定的服務器自動下載RPM包并且安裝,可…

    2017-08-05
  • linux軟件包管理(開始上正菜了)

    linux程序包管理:     API:數據接口     ABI:應用程序二進制接口        庫級別的虛擬化:             linux:wine    …

    Linux干貨 2017-03-07
  • linux shell 腳本詳解

    . Linux  shell 腳本編寫基礎◆1.1 語法基本介紹1.1.1 開頭程序必須以下面的行開始(必須方在文件的第一行):#!/bin/sh符號#!用來告訴系統它后面的參數是用來執行該文件的程序。在這個例子中我們使用/bin/sh來執行程序。當編輯好腳本時,如果要執行該腳本,還必須使其可執行。要使腳本可執行:編譯 chmod +x filen…

    2017-08-05
  • 遷移分區

          1 備份/home    2 創建分區 /dev/sdc1 10G   [root@localhost ~]# du -sh /home   52K /home   3 格式化分區   [root@localhost …

    Linux干貨 2017-04-25
  • keepalived的原理及安裝應用

    keepalived的主從模式,keepalived的日志功能和主主模式

    2018-03-13
  • sed工具

    sed是一種流編輯器,它是文本處理中非常中的工具,能夠完美的配合正則表達式使用,功能不同凡響。處理時,把當前處理的行存儲在臨時緩沖區中,稱為“模式空間”(patternspace),接著用sed命令處理緩沖區中的內容,處理完成后,把緩沖區的內容送往屏幕。接著處理下一行,這樣不斷重復,直到文件末尾。文件內容并沒有 改變,除非你使用重定向存儲輸出。Sed主要用來…

    2017-08-26
欧美性久久久久