Bash shell指令碼備忘
已開通新的部落格,後續文字都會發到新部落格
---
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簡單的介紹備註如上,如有錯誤,歡迎回帖指正