總結bash程式設計基礎,引入函式結構化程式設計。

2021-09-21 10:42:41 字數 3425 閱讀 8180

bash——bourn again shell 是一種直譯器解釋執行的指令碼語言,也可以實現程式設計功能。

bash變數型別:

本地變數:只對當前shell有效

區域性變數:local variable 僅對區域性**有效

環境變數:export variable 對當前shell及其子shell有效

位置變數:$1,$2,$3

特殊變數:$#,$!,$?,$@

指定變數型別:declare

declare -i variable:宣告乙個整型變數

declare -x variable:宣告乙個環境變數

declare -a variable:宣告乙個陣列

語言控制結構:

1、順序結構

2、選擇執行

3、迴圈執行

bash的for迴圈:

for variable in element list ;do

sentence one

sentence two

......

done

例1:寫乙個指令碼使用for建立10個使用者user1..user10,並為它們設定密碼。

例2:寫乙個指令碼,使用for迴圈,複製/etc/fstab、/etc/inittab、/etc/rc.d/init.d/functions檔案至/tmp目錄中,並重命名為原有的名稱之後加當前的日期。

判斷:if 條件;then

sentence one

sentence two

.....

else

sentence one

sentence two

.....

fi例1:讓使用者輸入乙個使用者,如果其id號大於499就說明是普通使用者,否則就說明是管理員或系統使用者。

例2:寫乙個指令碼,其可以接受三個引數,最後乙個引數為檔名,但引數可變化,形如:

script.sh  -a tuchao  /tuchao/test1.sh

script.sh  -b 2013-07-19  /tuchao/test1.sh

script.sh  -c 'some infomation' /tuchao/test1.sh

此指令碼能夠建立/magedu.com/scripts/test1.s**件,並且,如果給出了-a mageedu,則檔案前兩行為:

#!/bin/bash

# author: mageedu

如果給出了-d 2013-07-19,則檔案前兩行為:

#!/bin/bash

# date: 2013-07-19

如果給出了-d "some infomation",則檔案前兩行為:

#!/bin/bash

# description: some infomation

其它任何引數,均提示錯誤並退出;

如果沒有退出,則使用vim開啟此檔案,並使用游標預設處於最後一行;

儲存退出後,如果檔案有語法錯誤提示使用者有錯誤;

如果沒有語法錯誤,則給些檔案賦予執行許可權;

bash程式設計之case:

case variable in 

value1 )

;;value2)

;;value3)

;;* )

esac

例:寫乙個指令碼:可以接受乙個引數,其使用形式如下:

sevtest.sh 

如果引數為start,且/var/lock/subsys/sevtest檔案不存在,則建立空檔案/var/lock/subsys/sevtest,並顯示「starting server successfully.」;否則,顯示「server is already running.」

如果引數為stop,且/var/lock/subsys/sevtest檔案存在,則刪除檔案/var/lock/subsys/sevtest,並顯示「stop server finished.」;否則,顯示「server is stopped yet.」

如果引數為restart,則刪除檔案/var/lock/subsys/sevtest後重新建立,並顯示「restarting server successfully.」;

如果引數為status,那麼:

如果/var/lock/subsys/server檔案存在,則顯示為「server is running.」

否則,則顯示為「server is stopped.」

其它任何引數:則顯示「sevtest.sh 」

再來乙個例子?

例2:寫乙個指令碼(前提:請為虛擬機器新增一塊硬碟,假設它為/dev/sdb),為指定的硬碟建立分割槽:

1、列出當前系統上所有的磁碟,讓使用者選擇,如果選擇quit則退出指令碼;如果使用者選擇錯誤,就讓使用者重新選擇;

2、當使用者選擇後,提醒使用者確認接下來的操作可能會損壞資料,並請使用者確認;如果使用者選擇y就繼續,n就退出;否則,讓使用者重新選擇;

3、抹除那塊硬碟上的所有分割槽(提示,抹除所有分割槽後執行sync命令,並讓指令碼睡眠3秒鐘後再分割槽);並為其建立三個主分割槽,第乙個為20m,第二個為512m, 第三個為128m,且第三個為swap分割槽型別;

bash程式設計之函式,結構化程式設計:

寫乙個指令碼,完成以下功能:

說明:此指令碼能於同乙個repo檔案中建立多個yum源的指向;

1、接受乙個檔名做為引數,此檔案存放至/etc/yum.repos.d目錄中,且檔名以.repo為字尾;要求,此檔案不能事先存,否則,報錯;

2、在指令碼中,提醒使用者輸入repo id;如果為quit,則退出指令碼;否則,繼續完成下面的步驟;

3、repo name以及baseurl的路徑,而後以repo檔案的格式將其儲存至指定的檔案中;

4、enabled預設為1,而gpgcheck預設設定為0;

5、此指令碼會迴圈執行多次,除非使用者為repo id指定為quit;

終於寫完了,bash的內容有點多。   以上**都是小菜手寫測試截圖。

bash程式設計之 函式

函式 復用 模組程式設計 語法 function f name f name 呼叫 使用函式名 函式名出現的地方,會被自動替換為函式 練習 利用函式改寫此前的服務指令碼 bin bash prog basename 0 lockfile var lock subsys prog start stop...

Bash指令碼程式設計(四)之Shell函式

淘品牌 dm雜誌 清倉 韓版 李孝利 歐美復古羅馬鬥士 涼鞋 高跟鞋 實拍 58.0元 bash 的shell 函式是一種能把若干 unix linux 命令打包執行的方法,在執行時乙個簡單的名字就能夠代替這些命令。執行函式就像執行普通的 unix 命令一樣簡單。bash 會在當前上下文的環境中執行...

bash程式設計讀書筆記(基礎篇II)

24.也是變數。echo 解釋 也是變數代表當前shell執行的pid process id 通過 echo 既可以看到或者用 ps e grep bash。25.也是變數 username john echo 012name vasdf echo 13026.locale 檢視 linux語系。l...