程序是由指令加數據組成
編程風格分為過程式和對象時
過程式:以指令為中心,數據服務于指令,適合小型程序
對象式:以數據為中心,指令服務于數據,社和大型程序
高級語言的執行方式分為編譯型和解釋型
編譯型:先將高級語言通過編譯器編譯成二進制代碼再執行
解釋型:程序編寫完成后不轉換成二進制代碼,在使用時才通過解釋器解釋運行,不生成二進制程序
shell就是一種解釋器
程序的執行分為順序執行,循環執行,條件執行
bash –n:檢測腳本語法錯誤
bash –x:對腳本進行調試執行
PATH:默認不包括當前目錄,要想直接執行腳本,除了要有執行權限,目錄權限外還要寫路徑或將腳本所在路徑加入PATH中
設置變量時使用 變量名=變量內容
注意:變量內容默認是字符型,變量內容有空格要用雙引號引起來,變量名第一位不能是數字
刪除變量時使用后 unset 變量名
bash是弱類型,變量無需事先定義,默認為字符型,參與運算時會自動進行隱式轉換,不支持浮點式
變量命名規則:
不能使用程序保留字,如if,for等
只能使用字母,數字,下劃線,不能數字開頭
見命知意
統一命名規則
小駝峰:第一個單詞首字母小寫,其余首字母大寫
大駝峰:所有單詞首字母大寫
set命令可以查詢所有變量 env可以查詢所有環境變量
各種變量范圍
本地變量:對當前shell進程有效,對其他shell或當前shell子shell無效
環境變量:對當前shell及子shell有效
局部變量:對當前shell某片斷有效
位置變量:$1,$2…..讓腳本可以在代碼中調用命令行中的參數
特殊變量:
$#:傳遞給腳本的參數個數
$1:傳遞給腳本的第一個參數
$@:傳遞給腳本的所有參數
$*:傳遞給腳本的所有參數(與$@相比,在加””情況下$*是把所有參數作為一個整體,$@是把每一個參數都單獨列出來)
$?:上調命令執行結果
注:$10會被系統識別為$1 0
引用變量時要加$或者${}
定義環境變量可以使用export 或者declear –x
環境變量可以在定義時就聲明或在定義普通變量后再進行聲明
只讀變量可以使用readonly 或者 declear –r
短路與: 第一個為0,后面不用繼續運行 第一個為1,第二個必須要參與運算;
短路或: 第一個為1,后面不用繼續運行 第一個為0,第二個必須要參與運算; ?
異或:^ 異或的兩個值,相同為假,不同為真
實現算術運算:
1. let var=算術表達式
2.var=$[算術表達式]
3.var=$((算術表達式))
4.var=$(expr arg1 arg2 arg3 …)
5. declare –i var = 數值
6. echo ‘算術表達式’ | bc
bash中的測試指令 test或 []或[[]]
數值比較:
gt:大于
ge:大于等于
lt:小于
le:小于等于
eq:等于
ne:不等于
字符串比較:
==:等于
!=:不等于
=~:前面的字符串能被后面的表達式所匹配(一般用在[[]]中)
>:大于
<:小于(<>比較的是字符的ascii碼)
-z:字符串是否為空
-n:字符串是否為非空
存在性及類別測試
-e:文件是否存在
-b:文件是否為塊設備文件
-c:文件是否為字符設備文件
-d:文件是否為目錄文件
-f:文件是否為普通文件(包括了鏈接文件)
-p:文件是否為管道文件
-h/-L:文件是否為符號鏈接文件
-S:文件是否為套接字文件
-s:文件是是否存在且非空
-O:當前用戶是否為該文件屬主
-G:當前用戶是否為該文件屬組
-N:文件自上一次被讀取后是否被修改過
雙目測試:
#1-ef #2:兩個文件是否指向同一個inode
#1-nt #2:文件1是否新與文件2
#1-ot #2: 文件1是否舊與文件2
組和測試
&&:并且
||:或者
!:非
#1& = [ #1 –a #2 ]
#1||#2 = [ #1 –o #2 ]
注:正則表達式需要寫在[[]]中,而-a,-o則不支持[[]]
使用bash運行腳本相當于打開一個子shell運行
.或source相當于在當前shell運行命令
if語句使用方式
單分支:
if 判斷條件;then
代碼
else
代碼
fi
多分支:
if 判斷條件;then
代碼
elif判斷條件;then
代碼
……
else
代碼
fi
raad命令可以實現交互式輸入變量
read –p:可以輸出提示信息并接受變量
read –t:指定命令輸入時間
case命令用法(case支持glob通配符):
case $變量 in
判斷條件)
分支1
;;
判斷條件)
分支2
;;
……….
*)
默認分支
;;
esac
循環執行:將代碼重復運行多次
for循環用法(比較適合數字)
for 變量名 in 列表;do
循環體
done
依次將列表中元素賦給變量,每次賦值后就執行循環體,知道列表中元素耗盡
列表生成方法:
1、直接給出
2、整數列表 {start…end} $(seq [start end])
3、返回到列表的命令
4、使用通配符
5、變量引用
while循環用法
while 條件;do
循環體
done
進入循環前要先判斷條件是否成立,每次循環后再次進行判斷,直到條件不滿足為止
判斷條件中一般應有循環控制變量,該變量會隨著循環體進行而修正
until循環用法
until 條件;do
循環體
done
進入循環前要先判斷條件是否成立,不成立進入循環,成立則跳過
break:退出當前循環
exit:退出當前shell
continue:結束當次循環,繼續下次循環
原創文章,作者:zzzzz1357x1,如若轉載,請注明出處:http://www.www58058.com/36831
腳本語法需要總結好,更重要的是多寫多練,作業需要好好完成呢