天天看點

Linux---shell程式設計基本文法1.注釋2.字元串3.數組4.運算符(算術,關系,布爾,字元串,檔案測試)5.流程控制語句

shell程式設計基本文法

  • 1.注釋
  • 2.字元串
  • 3.數組
  • 4.運算符(算術,關系,布爾,字元串,檔案測試)
    • 1). 算術運算符
    • 2). 字元串運算符
    • 3). 整數值比較
    • 4). 布爾運算符(與或非)
    • 5). 邏輯運算符
    • 6). 檔案測試運算符
  • 5.流程控制語句
    • 1). if-else結構
    • 2). for循環
    • 3). while循環

1.注釋

單行注釋			#
多行注釋			:<<EOF
				注釋内容
				注釋内容
				注釋内容
				EOF
           

2.字元串

echo ${#String}				統計字元串長度并顯示
echo ${String:n:m}			從n位(第一位為0位)開始截取長度為m的字元串并顯示	
echo `expr index "$String" 		查找字元串中字元s的位置(從1開始)并顯示
           

3.數組

array=("Jason" "Jensen" "Tim")		定義數組
echo ${array[i]}			輸出數組i位
echo ${array[@]}或echo ${array[*]}	依次輸出數組所有元素
echo ${#array[@]}或echo ${#array[*]}	統計數組長度并顯示
           

4.運算符(算術,關系,布爾,字元串,檔案測試)

1). 算術運算符

+, -, \*, /, %(乘法需使用轉義字元)

c=`expr $a \* $b` 		乘法運算
           

2). 字元串運算符

:		字元串内容相同則為真,注意在=前後各有一個空格,如果沒有空格就是指派的關系
!=:		字元串内容不同,則為真
-z:		字元串内容為空(長度為零)則為真
-n:		字元串内容非空(長度非零)則為真
<:		string1 < string2 如果string1在本地的字典序列中排在string2之前,則為真
>:		string2 如果string1在本地的字典序列中排在string2之後,則為真
           

3). 整數值比較

eq:		等于(equal)
-ne:		不等于(not equal)
-gt:		大于(Greater than)
-lt:		小于(lesser than)
-le:		小于等于(lesser or equal)
-ge:		大于等于(Greater or equal)
           

4). 布爾運算符(與或非)

a :		與運算,-a與[]一起用
-o :		或運算,-o與[]一起用
! :		非運算,當制定條件不成立時,傳回結果為真
           

5). 邏輯運算符

&&:		邏輯與	&&與[[]]一起用
||:		邏輯或	||與[[]]一起用
           

6). 檔案測試運算符

b file		檢測檔案是否是塊裝置檔案,如果是,則傳回 true。
-c file		檢測檔案是否是字元裝置檔案,如果是,則傳回 true。
-d file		檢測檔案是否是目錄,如果是,則傳回 true。
-f file		檢測檔案是否是普通檔案(既不是目錄,也不是裝置檔案),如果是,則傳回 true。
-r file		檢測檔案是否可讀,如果是,則傳回 true。	
-w file		檢測檔案是否可寫,如果是,則傳回 true。	
-x file		檢測檔案是否可執行,如果是,則傳回 true。
-s file		檢測檔案是否為空(檔案大小是否大于0),不為空傳回 true。
-e file		檢測檔案(包括目錄)是否存在,如果是,則傳回 true。
-nt:file1 -nt file2	如果 file1 比 file2 新(修改時間),則為true
-ot:file1 -ot file2	如果 file1 比 file2 舊(修改時間),則為true
           

5.流程控制語句

1). if-else結構

if [ 條件測試語句1 ] ;
	then 指令1
elif [ 條件測試語句1 ] ;
	then 指令1
elif ...
else 
	指令n
fi
           

2). for循環

for var in 1 2 3 4
do
	echo  $var
done

for j in $(seq 1 5)   #seq産生循環次數

for循環總是接收in語句之後的某種類型的字清單。
字清單也可以引用磁盤上的檔案,甚至檔案通配符。

#對目錄中的檔案做循環
for x in /var/log/*
do
   echo "$x is a file living in /var/log"
   echo $(basename $x) is a file living in /var/log    #basename用于擷取基本檔案名,否則$x擷取絕對路徑
done 
           

3). while循環

while 指令表達式
do
  指令清單
done
           

繼續閱讀