1>程序必須以下面的行開始,符號#!用來告訴系統它後面的參數是用來執行該文件的程序。
#!/bin/sh或者其它
2>變量賦值
第一:在等號 "=" 的兩邊沒有空格
第二個:在定義一個字時可以省略引號,但是當定義的環境變量值多於一個字時(包含 空格或製表鍵),引號是必須的。
3>當環境變量沒有與周圍文本明顯分開時,可以用花括號將它括起
myvar='test'
echo $myvartest(錯誤)
echo ${myvar}test(正確)
4>當導出環境變量時,它可以自動地由以後運行的任何腳本或可執行程序環境使用
export myvar
5>單引號與雙引號區別
單引號變量無法擴展
myvar=test
echo '$myvar' //結果:$myvar
echo "$myvar" //結果:test
6>`反引號
反引號的功能是命令替換,將反引號中的字符串做爲命令來執行
A=`date`
echo $A 顯示的不是date而是當時的時間串
7>##,#,%%,%的用法參考
http://www.ibm.com/developerworks/cn/linux/shell/bash/bash-1/index.html
8>"$0" 這個程序的執行名字,$n 這個程序的第n個參數值,n=1..9 ,$* 這個程序的所有參數,$# 這個程序的參數個數,$? 執行上一個指令的返回值
9>判斷文件的屬性
-e 文件存在返回1, 否則返回0
-r 文件可讀返回1,否則返回0
-w 文件可寫返回1,否則返回0
-x
文件可執行返回1,否則返回0
-o 文件屬於用戶本人返回1, 否則返回0
-z 文件長度爲0返回1, 否則返回0.
-f 文件爲普通文件返回1, 否則返回0
-d 文件爲目錄文件時返回1, 否則返回0
10>測試字符串
字符串1 = 字符串2 當兩個字串相等時爲真
字符串1 != 字符串2 當兩個字串不等時爲真
-n 字符串
當字符串的長度大於0時爲真
-z 字符串 當字符串的長度爲0時爲真
字符串 當串字符串爲非空時爲真
11>測試兩個整數關係
數字1 -eq 數字2 兩數相等爲真
數字1 -ne 數字2 兩數不等爲真
數字1 -gt 數字2 數字1大於數字2爲真
數字1 -ge 數字2 數字1大於等於數字2爲真
數字1 -lt 數字2 數字1小於數字2爲真
數字1
-le 數字2 數字1小於等於數字2爲真
12>邏輯測試
-a 與
-o 或
! 非
13>特殊字符
$ 美元符
\ 反斜槓
` 反引號
" 雙引號
< ,>,*,?,[,]
14>通配符
* 任意字符串
? 一個任意字符
[abc] a, b, c三者中之一
[a-n] 從a到n的任一字符
15>字符串比較
請用雙引號括起字符串和字符串變量,因爲如果環境變量中恰巧有一個空格或製表鍵,bash 將無法分辨,從而無法正常執行程序
if [ "$myvar" = "foo bar oni" ]
then
echo "yes"
fi
16>shell算術
請使用算術表達式用 "$((" 和 "))" 括起
echo $((1+3))
17>確保方括號空格
通常用" [ ] "來表示條件測試。要確保方括號的空格。
18>local定義變量,把變量放在局部名稱空間
myvar="hello"
myfunc() {
local x
local myvar="one two three"
for x in $myvar
do
echo $x
done
}
myfunc
echo $myvar $x