shell 9 迴圈 while util 函式

2021-10-08 01:40:30 字數 4692 閱讀 1540

昨日回顧:

1.分支語句(單分支,雙分支,多分支)

if condition;then do something;fi

2.迴圈語句

for do done (一次性寫)

for 迴圈:迴圈序列+do事情

while迴圈:迴圈條件+do事情

示例

1.迴圈列印1-5數字(for+while)

(1)for語句:

#!/usr/bin/bash

for num in

doecho

$num

done

(2)while語句:

#!/usr/bin/bash

i=1;

while

[$i -le 5 ]

doecho

$ilet i=

$i+1

done

圖3.2

while語句

while

dodone

示例:

2.迴圈列印50以內的偶數和

tips:

思路一:

(1)初始化資訊,i=1 sum=0

(2)迴圈條件, $ i <= 50

(3)判斷是否為偶數,如果是進行相加;如果不是,什麼都不做。

(4)let sum= $ sum+$ i i=$i+1

思路二:

(1)初始設定為2,每次步長為2

3.專案案例:shell指令碼同步時間

專案需求:寫乙個指令碼,30秒同步一次系統時間,時間同步伺服器自己搭建。如果同步失敗,則進行郵件

解題tips:

(1)chronyc source,出現^*表示同步成功

(2)每隔多少秒做一次什麼事情(週期性做事情)

crontab

簡單情可使用while迴圈(使用while迴圈實現crontab)

解題思路:

1.每3秒做一次事情

while

true

doecho

"hello shell"

sleep 3

done

休眠30秒表示每隔30做一次事情。

2.chronyc source | grep 『 ? * 』 ;echo $?看返回值,判斷有無同步成功

3.安裝軟體,檢視誰提供了這條命令

安裝mailx軟體、sendmail、postfix(並且開啟start enable)

4.mail root

subject:time chronyd status

aa. 表示結束傳送

5.mail -s 「***」 -s表示主題

6.和while迴圈正好相反,直到不滿足某個條件就開始執行迴圈

專案需求:

1.使用until語句批量建立10個使用者

2.stu5使用者uid1001~1005

3.stu6-stu10

總結與作業(第四題,rhsca考試題目)

1.分支語句

2.判斷軟連線是否有效

3.read -p 乙個管理員傳送郵件

4.指令碼較簡單

5.nfs服務 網路檔案共享

samba shell指令碼自動化實現samba自動搭建(你熟悉你做過什麼,建立更有主導權,web服務搭建)

samba自動化搭建需要sed相對複雜一些。

shell程式設計實戰:自動化搭建nfs伺服器並共享目錄

tips:

(1)哈哈你先想想nfs是幹啥的來,需要怎麼搭建的

思路:1.是否能ping得通

2.關閉selinux和防火牆

3.檢測一下軟體是否已經安裝

-ql 檢測這個軟體創造了哪些檔案

-q檢測有沒有安裝這個軟體

3.exit 1 返回錯誤狀態碼1表示退出

4.建立共享目錄、並且進行共享。

(1)使用者輸入共享目錄

(2)判斷目錄是否存在

(3)mkdir -p 遞迴建立目錄(父級目錄不存在,先建立父級目錄)

(4)chmod 1777 $dir 只有檔案所有人和超戶root才可以刪。

(5)讓使用者輸入共享網段

(6)以唯讀方式共享 還是讀寫方式共享

起名字時盡量避免abc或者拼音 用英文含義單詞

(7)cat >> aa.txt << eof開始寫追加的內容

5.編輯nfs配置檔案(兩部分內容)

sharedir subnet 盡量拷貝單詞

6.設定服務開機啟動

nfs服務依賴於rpcbind

先啟動rpcbind,再啟動nfs。兩者都要啟動

7.成對寫好if then fi

8.客戶端測試

(1)showmount -e 172.25.254.39

(2)伺服器端刪了某些東西,本地就沒有了。

(3)本機測試指令碼:

怎麼獲取本機ip (通過命令獲取本機ip) 完善

[ $? -eq 0 ]上一條命令有沒有執行成功

掛載也能寫在指令碼

完善:1.如果服務已經開啟,共享失敗

2.你是要清空原先配置檔案還是追加

3.判斷服務有沒有開啟

擴充套件作業:自動搭建samba服務

目標:掌握case語句的基本語法結構

case var in 

pattern 1)

command 1;;

pattern 2)

command 2;;

*)command3;;

esac

檢測pattern1 這個字串是否和輸入的字串是否相同。

示例1:

普通使用者不能啟動服務,超戶才可以啟動服務。

有沒有安裝,沒有的話進行安裝,然後case進行選擇start或者stop等。

示例二:

需求:模擬乙個多工維護介面;當執行程式 時先顯示總選單,然後進行選擇後做相應維護監控操作

tips:

(1)顯示磁碟分割槽資訊 blkid | cut -d : -f 1

(2)顯示磁碟掛載資訊 df -h (我只想知道哪個分割槽掛載到哪個目錄上了)

(3)顯示記憶體資訊 free -m

(4)系統負載資訊uptime (但是top是動態的)

思路:1.列印選單欄資訊

echo

" h 顯示選單

f 顯示磁碟分割槽

d 顯示磁碟掛載

m 顯示記憶體使用

u 顯示系統負載

q 退出

"

2.while true 實現一直迴圈

while

true

dodone

示例三:

rhcsa考試 指令碼 建立使用者+判斷使用者輸入的字串

什麼是函式

方法一:

函式名()
方法二:

在這裡插入**片
shell 中呼叫函式,直接使用函式名,不需要加括號。python中加括號。

exit 0 正常主動退出

exit 1

示例一:有顏色的字串輸出

應用場景:紅色代表錯誤;黃色代表警告;綠色代表成功

tips:

echo -e 顯示顏色

\033[ 0預設設定 1加粗

30m字型顏色(30-36)

hello字串

\033[0m

0m結束顏色的設定

red=

"\033[31m"

green=

"\032[32m"

yellow=

"\033[33m"

end=

"\033[0m"

echo -e "\033[31m hello \033[0m"

#顯示紅色語句

示例**:

加粗樣式

red=

"\033[31m"

green=

"\033[32m"

yellow=

"\033[33m"

end=

"\033[0m"

echo_color_string(

)echo_color_string 'red'

'hello'

echo_color_string 'yello'

'hello'

echo_color_string 'green'

'hello'

示例結果:

shell 死迴圈if判斷 shell 死迴圈

例1 執行指令碼後會自動載入firefox瀏覽器,並開啟指定網頁。如果使用者關閉firefox,指令碼會再次自動重新開啟firefox。如需結束迴圈,中止t2.sh程序即可。注意不要同時執行兩個t1.sh指令碼,否則 若事先不知道指令碼名,也可以通過類似於 pstree grep firefox 的...

shell命令,shell迴圈,shell引數

touch hello.sh 建立乙個檔案 vi hello.sh 編輯文字 bin bash 指定bash解析器,centos預設的是bash解析器 echo helloworld echo helloworld 這兩句話效果相同,不過為了符合規範用第二種 執行指令碼,首先賦予指令碼最大許可權 c...

shell指令碼程式設計 迴圈(for迴圈)

知識回顧 建立shell指令碼規則 執行指令碼 變數測試 運算if 單分支 雙分支 多分支 例項 剪刀石頭布 檢測主機是否存活 判斷成績 迴圈 for while case 分支編寫 學習shell注意 shell是一門只針對於linux的指令碼語言 知識放空 重點是學習語法結構 for迴圈 語法結...