03 shell程式設計之case語句與函式

彈指流沙間發表於2018-06-10

本文所有內容均來自當年博主當年學習筆記,若有不足歡迎指正

Shell程式設計之case語句與函式

學習目標:

掌握case語句程式設計

掌握shell函式的使用

目錄結構:

 

 

 

Case語句

Case語句的作用

l  使用case語句改寫多分支可以使指令碼結構更加清晰,層次分明

l  針對變數不同取值,執行不同的命令序列

 

Case語句的結構

case 變數值 in

模式1)

       命令序列1

       ;;

模式2)

       命令序列2

       ;;

*)

       預設命令序列

csac

 

case變數=模式1 ?是,則執行命令序列1,否,則判斷變數=模式2 ?是,則執行命令序列2,否,則判斷變數=模式3 ?是,則執行命令序列3,否,則執行預設命令序列。

 

例項:

l  擊鍵型別識別指令碼,判斷輸入的是字母還是數字還是其他字元

[root@poll ~]# vi a.sh

#!/bin/bash

#this is zifupanduan

read -p "請輸入一個字元:" key

case $key in

[a-z]|[A-Z])

        echo "您輸入的是字母。"

        ;;

[0-9])

        echo "您輸入的是數字"

        ;;

[/]|[?]|[,])

        echo "您輸入的是$key"

        ;;

*)

        echo "您輸入的是其他字元"

esac

 

shell函式

l  將命令序列按格式寫在一起

l  可方便重複使用命令序列

l  Shell函式定義

[function] 函式名(){

命令序列

[return x]

}

l  呼叫函式的方法

[root@poll ~]# vi sum.sh

#!/bin/bash

#this is SUM

SUM(){

echo "這是一個求和運算"

read -p "請輸入第一個數:" A

read -p "請輸入第二個數:" B

echo "你輸入的兩個數分別為:$A $B"

SUM=$(($A+$B))

echo "兩個數的和為:$SUM"

#return $(($A+$B))

}

SUM

#echo "兩個數的和為:$?"

l  Linux系統中有很多伺服器啟動指令碼

定義了豐富的shell函式

巢狀了各種語句,如if語句等

可參考其編寫的伺服器啟動指令碼

[root@poll scripts]# vi /etc/init.d/network

……

if [ -f /etc/sysconfig/pcmcia ]; then

    . /etc/sysconfig/pcmcia

fi

 

 

# Check that networking is up.

[ "${NETWORKING}" = "no" ] && exit 6

 

# if the ip configuration utility isn't around we can't function.

[ -x /sbin/ip ] || exit 1

 

 

CWD=$(pwd)

cd /etc/sysconfig/network-scripts

……

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

本章初步結束,下一節講迴圈語句

相關文章