1 單引號
a=1b='a string'
單引號遮蔽各種特殊字元。echo 『$a " % \n ' 只能得到 $a " % \n
單引號可以指明界限,防止由分隔符----空格引起的歧義。$b不能寫成b=a string,會報錯。
2 雙引號
a=1基本和單引號一樣,但是雙引號支援內部字元有特殊含義,比如換行,變數,傳遞的引數等。echo 「$a /" // \\ " 輸出 1 」 / \。
3 反引號
a=" hello linux !"
反引號內部先運算,然後把結果傳遞給反引號外邊的引數,相當於$()。echo ` expr 2 + 2 ` 返回4
支援常用的命令操作,echo ` ls `
4 方括號
a=1方括號內部支援數字加減乘除運算:echo $[2 + 2],echo $[2 * 2] (不用轉義)
可以用於指定邊界防止歧義。 echo $[a] 返回1
可以用於字串運算子: = 是否相等;!=是否不相等;-z字串長度是否為0;-n字串長度是否不為0;str字串是否不為空?
a='abc'b='abc'
if [ $a = $b ]
then
echo "no e"
fi
對變數和值進行條件判斷,和test作用一樣,但是不和test一起用,可以結合,-lt,-gt,-ge,-le,-a, -o ...[ $var1 -ne 0 -a $var2 -gt 2 ]變數1不等於0而且變數2大於2。如果用判斷語句&& 和 ||,充當if後的條件語句的時候,外邊還要疊套一層方括號:if
[[ $a != 1 && $a != 2 ]] 或者
if
[ $a -
ne
1] && [ $a != 2 ]
檔案系統測試,和test作用一樣,但是不一塊用。[ -f daqing ] ,檔案daqing存在,且為普通檔案,
在陣列中的下標需要用方括號表明,a = (1 2 3) ,echo $ 返回1.
5 圓括號
陣列需要用圓括號括起來,a = (1 2 3) 。
命令組,小括號裡可以放好幾個命令,彼此之間用分號隔開,注意:括號中的命令將會新開乙個子shell順序執行,所以括號中的變數不能夠被指令碼餘下的部分使用
astr='hehehehe'bstr='hahahaha'
if test [ $astr = $bstr ]
then
( echo "astr !=bstr";echo "hehe" ) #返回結果的第一行是astr != bstr,第二行是hehe
fi
圓括號也可以用於計算:$((exp))和`expr ...`是一樣的,echo $(( 2 + 2 )) 返回4.
括號裡的命令之間也可以有規則,這樣的用法常常充當迭代的時候的條件語句,比如可以直接使用for((i=0;i<5;i++)),
#!/bin/bashfor((i=0;i<=5;i++))
do echo $i
done #返回0 1 2 3 4 5
6 大括號
命令組。 在當前shell順序執行命令cmd1,cmd2,cmd3, 各命令之間用分號隔開,最後乙個命令也必須帶分號。
**塊,用於區分程式的邊界或者防止變數名引起歧義。變數的值應當是$,不引起歧義的情況下可以去掉大括號,再者,用大括號表明邊界和格式,
demofun()demofun
大括號有一種特殊用法,相當於從1到10,touch .txt 結果為a.txt b.txt c.txt d.txt。大括號中沒有空格。
shell 引號 括號 用法詳解
1 單引號 雙引號 反引號區別 單引號 雙引號用於當變數出現空格時,用引號括起來,加以區分 單雙引號的區別 單引號括起來的所有字元都是普通字元,就算是特殊字元也等同為普通字元 雙引號中的 以及反引號都是有特殊含義的,表示引用變數的值,反引號表示引用命令 反引號 命令 和 命令 的的作用是一樣的,呼叫...
bash 一 shell中括號,引號的用法
bash中if的幾種用法 if command then command fitest for number and strings if test expression then command fior if string numeric expression then command fite...
shell程式設計中,單引號,雙引號,各種括號的區別
一 單引號和雙引號 首先,單引號和雙引號,都是為了解決中間有空格的問題。因為空格在linux中時作為乙個很典型的分隔符,比如string1 this is astring,這樣執行就會報錯。為了避免這個問題,因此就產生了單引號和雙引號。他們的區別在於,單引號將剝奪其中的所有字元的特殊含義,而雙引號中...