bash——Bourn Again Shell 是一種解釋器解釋執行的腳本語言,也能夠實現編程功能。shell
bash變量類型:編程
本地變量:只對當前shell有效vim
局部變量:local variable 僅對局部代碼有效數組
環境變量:export variable 對當前shell及其子shell有效bash
位置變量:$1,$2,$3ide
特殊變量:$#,$!,$?,$@函數
指定變量類型:declare測試
declare -i variable:聲明一個整型變量ui
declare -x variable:聲明一個環境變量url
declare -a variable:聲明一個數組
語言控制結構:
一、順序結構
二、選擇執行
三、循環執行
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目錄中,並重命名爲原有的名稱以後加當前的日期。
如何在shell腳本中進行算術運算:
寫一個腳本,計算100之內全部整數的和。
判斷:
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.sh文件,而且,若是給出了-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|stop|restart|status}
若是參數爲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 {start|stop|restart|status}」
再來一個例子?
例2:寫一個腳本(前提:請爲虛擬機新增一塊硬盤,假設它爲/dev/sdb),爲指定的硬盤建立分區:
一、列出當前系統上全部的磁盤,讓用戶選擇,若是選擇quit則退出腳本;若是用戶選擇錯誤,就讓用戶從新選擇;
二、當用戶選擇後,提醒用戶確認接下來的操做可能會損壞數據,並請用戶確認;若是用戶選擇y就繼續,n就退出;不然,讓用戶從新選擇;
三、抹除那塊硬盤上的全部分區(提示,抹除全部分區後執行sync命令,並讓腳本睡眠3秒鐘後再分區);併爲其建立三個主分區,第一個爲20M,第二個爲512M, 第三個爲128M,且第三個爲swap分區類型;
bash編程之函數,結構化編程:
寫一個腳本,完成如下功能:
說明:此腳本能於同一個repo文件中建立多個Yum源的指向;
一、接受一個文件名作爲參數,此文件存放至/etc/yum.repos.d目錄中,且文件名以.repo爲後綴;要求,此文件不能事先存,不然,報錯;
二、在腳本中,提醒用戶輸入repo id;若是爲quit,則退出腳本;不然,繼續完成下面的步驟;
三、repo name以及baseurl的路徑,然後以repo文件的格式將其保存至指定的文件中;
四、enabled默認爲1,而gpgcheck默認設定爲0;
五、此腳本會循環執行屢次,除非用戶爲repo id指定爲quit;
終於寫完了,bash的內容有點多。 以上代碼都是小菜手寫測試截圖。
有問題歡迎與我交流QQ:1183710107