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)內建符號
符號 |
使用說明 |
$@ |
代表全部參數 |
$# |
參數的個數 |
$? |
上一個命令返回的結果 |
$$ |
當前命令所在的進程號 |
$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簡單的介紹備忘如上,如有錯誤,歡迎回帖指正