shell腳本的開頭必須加#! /bin/bash
test:
對文件測試
- d 目錄- s 文件長度大於0、非空
- f 正規文件- w 可寫
- L 符號連接- u 文件有s u i d位設置
- r 可讀- x 可執行
例子:[-d lj] //lj目錄存在嗎? 存在則爲真
邏輯測試
-a (與) -o (或)
字符串測試
[string1 operator string2]
= 兩個字符串相等。
!= 兩個字符串不等。
-z 空串。
-n 非空串。
進行字符串比較時 變量必須用雙引號...在變量賦值時,變量沒有規定必須要雙引號
如:["$PATH1" = "$PATH2"]
測試數字
-eq 數值相等。
-ne 數值不相等。
-gt 第一個數大於第二個數。
-lt 第一個數小於第二個數。
-le 第一個數小於等於第二個數。
-ge 第一個數大於等於第二個數
if 條件判斷
if 條件1
then 命令1
elif 條件2
then 命令2
else 命令3
if
case
case 值 in
模式1) 命令1
...
;; //兩個分號
模式2)命令2
...
;; //兩個分號
esac
for
for 變量名i n列表
do
命令1
命令2…
done
雙引號:
對shell, 對已經賦字符串值的變量,有沒有雙引號都是一樣的值.
如:
#MYDATE="date"
#echo $MYDATE
date //輸出也是data, 但在條件測試裏,必須要加雙引號.
單引號:
與雙引號一樣. 但如果屏蔽了它特殊的含義,將會單引號被輸出...
如:
#GIRL='beauty' //如何echo $GIRL 則輸出的是 beauty
#echo "she is '$GIRL'" //裏面的單引號被輸出
she is 'beauty'
反引號:
shell將反引號中的內容作爲一個系統命令,並執行其內容
如:
$echo `data`
Sun May 16 16:40:19 GMT 1999
常用嵌入標準命令
: 空,永遠返回爲t r u e
. 從當前shell中執行操作
break 退出for、while、until或case語句
cd 改變到當前目錄
continue 執行循環的下一步
exit 退出當前shell
pwd 顯示當前目錄
位置參數: 如果要訪問超過$9參數,請用shift
$0 $1 $2 $3 $4 $5 $6 $7 $8 $9
腳本名字 Did You See The Full Moon
特殊變量參數
$# 傳遞到腳本的參數個數
$* 以一個單字符串顯示所有向腳本傳遞的參數。與位置變量不同,此選項參數可超 過9個
$$ 腳本運行的當前進程I D號
$! 後臺運行的最後一個進程的進程I D號
$@ 與$ #相同,但是使用時加引號,並在引號中返回每個參數
$- 顯示s h e l l使用的當前選項,與s e t命令功能相同
$? 顯示最後命令的退出狀態。0表示沒有錯誤,其他任何值表明有錯誤。