shell case語句及函式

2021-07-31 14:48:54 字數 4134 閱讀 1463

case 選單選擇列印

語法:case var in var變數

patten 1) 匹配模式1 a|b|c |和or類似

command... 需要執行的命令

;; 命令執行完畢

patten 2)

command...

;;*) 預設值,沒有匹配的模式

command...

;;esac 代表case語句的結束

demo1:當給程式輸入start|s時,顯示service is running!;stop——>service is stoped;...

#!/bin/bash

#read -p "請輸入引數:" var

case

$1in

start|s)

echo service is running

;;stop)

echo service is stoped

;;reload)

echo service is reload

;;*)

echo ***xx

;;esac

demo2:相互巢狀

#!/bin/bash

read -p "小明,你喜歡我嗎?(喜歡|不喜歡|愛你):" love

case

$love

in 喜歡)

echo

"我也喜歡你"

;;不喜歡)

read -p "那你喜歡誰?" who

case

$who

in 小紅)

echo

"她是我的閨蜜"

;;小彭)

echo

"額..拜拜"

;;*)

echo

"我們不合適"

;;esac

;;*)

echo

"你到底什麼意思?"

;;esac

demo3:維護選單選擇

#!/bin/bash

echo

"*********welcome to uplooking*********"

echo

"*********選擇操作型別*******************"

echo

"**********1——系統**********************"

echo

"**********2——程式**********************"

echo

"**********3——資料庫********************"

echo

"**********0——退出**********************"

read -p "請選擇操作型別:" choose

case

$choose

in1)

echo

"你選擇的型別是系統維護"

;;2)

echo

"你選擇的是程式"

;;3)

echo

"*********welcome to uplooking*********"

echo

"*********選擇操作型別*******************"

echo

"**********1——備份**********************"

echo

"**********2——資料匯入匯出****************"

echo

"**********0——退出**********************"

read -p "請你輸入對資料庫的操作:" choose1

case

$choose1

in0)

echo

"退出"

;;1)

echo

"備份資料庫"

;;2)

echo

"匯入匯出"

;;*)

echo

"你要幹啥?"

;;esac

;;0)

exit

;;esac

課堂練習:

1、輸入乙個等級(a—e),檢視每個等級的成績;如輸入a,則顯示"90分~100分";依次類推

2、模擬乙個2人相親的場景,互動式輸入名字、性別、年齡(年齡放在性別判斷後)

1>對性別進行判斷,如果不輸入男或者女,則顯示「你是泰國來的碼?」如果是男的則對年齡判斷:

2>男的年齡大於18歲則顯示「某某先生,你結婚了碼?」;如果對方回答yes或者結了,則顯示「那你來著湊什麼熱鬧?」;如果對方回答no或者沒結,則再次詢問「那你有房有車嗎?」;如果既不說結了也不說沒結,則顯示「你到底有沒有結婚??」

3>問有房有車嗎,對方回答有,則顯示「咱們去民政局領證吧,正好今天是七夕!」;如果對放回答沒有,則顯示「不好意思,我去下洗手間...」;如果即不回答有也不回答沒有,則顯示「請正面回答我的問題??」

4>男的年齡如果小於18歲,則顯示「你個小貓孩來著幹啥,不好好讀書」

5>如果是女的,並且年齡大於18歲,則顯示「某某女士,您好」;否則顯示「某某小姐,您好」

函式:語法結構:

方法1:

function function_name

()方法2:

function_name

()return:作用

1、用來返回乙個值給函式,主函式可以呼叫該返回值 0~256

return

22、用來結束函式

demo1:

#!/bin/bash

function hello

()world

()函式呼叫:

1、直接在終端呼叫

# source fun1.sh

[root@node1 shell03]# hello uplooking

hello

uplooking

[root@node1 shell03]# world 888

hi888

2、寫到全域性的環境變數檔案裡

vim /etc/profile

...function hello

()world

()3、指令碼裡呼叫

#!/bin/bash

function hello

()#read -p "請輸入引數:" var

case

$1in

start|s)

hello uplooking

echo service is running

;;stop)

hello 66666;

echo service is stoped

;;reload)

echo service is reload

;;*)

hello 7777;echo ***xx

;;esac

demo:批量建立3個使用者user1~user3;使用者的附加組為admin組;密碼為123

#!/bin/bash

g=admin

groups

()users

() do

useradd -g $g user$i

echo

123|passwd --stdin user$i

done

}grep -w admin /etc/group &>/dev/null

if [ $? -ne

0 ];then

groups

users

else

users

fi作業:

寫指令碼自動搭建web服務,要求如下:

1、基於網域名稱的虛擬主機(dns可以用指令碼也可以寫到hosts檔案中即可)

2、訪問www.myweb.com——>this is myweb test page

3、web伺服器的ip和主機名互動式的從外部輸入,並且如果不輸入一致提示輸入

在指令碼中可以先寫乙個函式,目的是如果不輸入相應的內容則一致提示輸入

4、搭建完後要顯示測試是否成功

5、根據自己的想法可以是該指令碼更豐富

預習:sed

shell case語句多分支判斷

shell指令碼,case多條件判斷語法基本格式 bin bash op 1 case in 條件1 cmd 1 cmd 2 條件2 cmd 1 cmd 2 cmd 1 cmd 2 exit 1 可以加退出值 esaccase取值後面必須為關鍵字 in,每一模式必須以右括號結束。條件1 條件2 取值...

shell case的用法及shell如何執行

bin sh case 1 in echo print infomation nnnnnnnnqwerty echo print information ndsf lgkjsdflkgjsdfljgsjfdlgslflk 1 echo print information 1 esac 上面為乙個sh...

oracle實用語句及函式記錄

查詢插入 insert into table a col1,col2 select col1,col2 from tab b where condition 補齊函式 lpad col1,length,a 左邊補齊函式,用於處理資料,將col1列的資料,格式化成固定length長度的字元,不足長度時...