1、大部分的linux系統預設配置
bash
。對比sh
,bash
擴充套件了一些命令和引數,並且保留對
sh的一些相容
。除了bash、sh
還有csh
(語法類似
c語言)、
tcsh
(csh
公升級版)、
ash(適合低記憶體環境)
2、指令碼開頭 #!/bin/sh , #!必須有,後面跟上的是
shell
的路徑3、變數賦值和取值
(1) bash shell 在預設情況下不會區分變數型別,即使你將整數和小數賦值給變數,它們也會被視為字串,這一點和大部分的程式語言不同。
variable=value 注意:賦值號左右不能留空格
(2) $後面跟上變數表示讀取變數裡面的值,特殊情況可以加上{}表示變數的邊界
輸出結果:
(3) 單引號和雙引號的區別:以單引號' '包圍變數的值時,單引號裡面是什麼就輸出什麼,即使內容中有變數也會把它們原樣輸出,雙引號內的變數才會取值輸出
輸出結果:
4、linux命令結果賦值:用反引號(
esc下面、
tab上面的點)表示
輸出結果:
5、運算子:
(1) expr :後面跟上需要運算的演算法,需要用反引號,每個引數間要有空格
(2) $(( )): 演算法要有空格
(3) let: 演算法
不能有空格
輸出結果:
6、陣列定義
(1)或者
(2) 取值:
7、if...else...if: 和常用程式語言的區別在於結束是用
fi表示,每個條件後面要加上
then
,(1) 方括號([ ])內的引數之間必須有空格
(2) 多條件判斷
8、 case ... esac :類似其他語言的
switch ... case
,case
工作方式如上所示。取值後面必須為關鍵字
in,每一模式必須以右括號結束。取值可以為變數或常數。匹配發現取值符合某一模式後,其間所有命令開始執行直至 ;;。
;; 與其他語言中的
break
類似,意思是跳到整個
case
語句的最後。
9、while 迴圈
10、shell 函式
:可以將可能重複用到的命令封裝成乙個函式,函式可以帶返回值,函式內用
return
返回,函式外用
$?接收返回值。
shell
函式返回值只能是整數,一般用來表示函式執行成功與否,
0表示成功,其他值表示失敗。如果
return
numeric argument required
」。如果有需要返回其他型別的值,可以在外部定義乙個變數,來接受結果。
11、引數:shell指令碼可以帶引數,在指令碼中,通過
$n 的形式來獲取引數的值,例如,
$1表示第乙個引數,
$2表示第二個引數
」井號表示注釋
13、特殊字元
特殊變數
說明$#
傳遞給函式的引數個數。
$*顯示所有傳遞給函式的引數
$?函式的返回值。
$0當前指令碼的檔名
$$當前shell
程序id
-eq檢測兩個數是否相等,相等返回 true
。-ne
檢測兩個數是否相等,不相等返回 true
。-gt
檢測左邊的數是否大於右邊的,如果是,則返回 true
。-lt
檢測左邊的數是否小於右邊的,如果是,則返回 true
-ge檢測左邊的數是否大等於右邊的,如果是,則返回 true
。-le
檢測左邊的數是否小於等於右邊的,如果是,則返回 true
shell指令碼 命令
命令連線符 表示不管前面是否執行成功都要執行 表示前面執行成功才執行後面 表示前面執行失敗才執行後面 read命令 read 選項 值 read p 提示語句 n 字元個數 t 時間秒 s 不顯示 運算子 expr 3 2 結果賦值 sum expr 3 2 或者 sum 3 2 乘法expr 3 ...
shell指令碼命令
1.建立檔案 home test test.log rootdir home test testfile rootdir test.log touch testfile 2.如果檔案存在則刪除檔案 if f testfile then rm rf testfile fi3.如果檔案不存在則建立檔案 ...
shell指令碼注意點
1.等號兩邊不能有空格,例如 獲取七天前的日期 before 7 day date d 7 days ago y m d 2.自定義函式只能返回數值,不能返回陣列 字串等內容。如果需要生成字串等結果,可以宣告為全域性變數,然後將值賦給全域性變數,這樣就可以在函式外訪問 get string 返回錯誤...