1. 程式人生 > >Bash shell指令碼備忘

Bash shell指令碼備忘

已開通新的部落格,後續文字都會發到新部落格

http://www.0xfree.top

---

shell在linux中是很常用的一種解釋型別的指令碼,包含很多型別,使用範圍較廣的為bashshell ,在讀android原始碼中shell檔案隨處可見,故對此作一備忘(詳解shell都可以單獨出書了),將一些常用符號和語法記錄如下,方便查詢

1.一個簡單的shell指令碼如下

#!/bin/bash

echo "Hello shell"

 

備註:

1).shell指令碼在頂部必須新增#!/bin/bash,來指定所使用的shell型別

2)shell指令碼副檔名.sh 可有可無,習慣新增,用於區別檔案型別

3)執行可以這樣輸入:

$. a.sh

或者

$sh a.sh

2.Bash指令碼中常用的符號

1)特殊符號

符號

使用說明

註釋符#

註釋說明

雙引號""

引號內的所有字元全部變為普通字元,除 反斜槓\ 倒引號`` 美元符$

單引號''

將引號內所有字元全部變為普通字元

倒引號``

引號內部分當作shell解釋執行

反斜槓\

轉義字元,將特殊字元變為普通字元

美元符$

引用變數的值

2)檔案測試符號

符號

使用說明

-f

檔案存在且普通檔案

-d

資料夾存在

-x

檔案存在且可執行

-w

檔案存在且可寫

-r

檔案存在且可讀

-s

檔案存在且位元組大於0

-n

運算元長度不為0

-z

運算元長度為0

-a

邏輯與

-o

邏輯或

!

邏輯非

3)比較運算子

 

符號

使用說明

-eq

為整數,相等(只可用於比較整數,不能比較字串相等)  

-neq

為整數,不相等

=

為字串,相等

!=

為字串,不相等

-lt

為整數,小於

-gt

為整數,大於

-le

為整數,小於等於

-ge

為整數,大於等於

4)內建符號

 

符號

使用說明

[email protected]

代表全部引數

$#

引數的個數

$?

上一個命令返回的結果

$$

當前命令所在的程序號

$n

代表輸入的第n個引數

$0

Shell程式的名稱

3.條件判斷

#!/bin/bash

if [ "$1" = "normal" ]

then

echo "this is normal"

elif [ "$"2 = "active" ]

then

echo "this is active"

fi

備註:

1)在"["與"$1"之間必須新增空格,"["是一種運算子號,故需與後邊引數空格隔開

2)if之後必須新增then

3)結束用fi

4.while [] do...done

備註:

1)使用時注意"["代表含義

2)結束用done

5.case esac選擇語句

#!/bin/bash

case $1 in

1)

echo "選擇了1"

;;

2)

echo "選擇了2"

;;

esac

備註:

1)in也是linux命令,不可丟失

2)每個case分支結束用;;

3)case結束用esac

4)break可以跳出,不執行後邊的分支

6.for迴圈

#!/bin/bash

for x in `seq 1 9 `

do

echo `expr $x \* 10 '

done

備註:

1)for 與in 連用,用於表示從某個集合中取得元素

2)`seq 1 9`表示取1-9的順序數列

3)expr 表示求後邊表示式的值

7.函式

備註:

函式的定義一定要在引用之前,可以有引數可以沒有引數,可以想象為一群命令的集合

================================================================

PS:shell簡單的介紹備註如上,如有錯誤,歡迎回帖指正