1.中括號[ ]
①bash 的內部命令,[和test是等同,作為條件判斷結構
if [ ];then cmd;fi
②引用陣列中每個元素的編號
2. 雙中括號 [[ ]]
雙中括號大多數情況與單中括號相同,但是[[ ]] 支援字串的模式匹配,如[[ hello == hell? ]]。且能避免許多bug
if [ $i
-lt5 ]
if [ $a
-ne1
-a$a != 2 ]
if [ $a
-ne1] && [ $a != 2 ]
if [[ $a != 1 && $a != 2 ]]
①使用[ ]判斷變數是否為空,我們定義4個變數,變數b只定義不賦值,變數c定義為空字串,變數d為空格,變數e正常賦值
[root@os logs]
# b=;c='';d=' ';e=e
[root@os logs]# [
-n$a
]&& echo aok;[-n
$b]&& echo bok;[-n
$c]&& echo cok;[-n
$d]&& echo dok;[-n
$e]&& echo eok;
aokbok
cokdok
eok
所有的都判斷為真,所以用[ ] 來判斷某變數是否為空,會出很多bug,而用[[ ]]便不存在,如下所示,僅變數d和變數e判斷為非空
②使用[[ ]]判斷變數是否為空
[root@os logs]# [[ -n $a ]] && echo aok;[[ -n $b ]] && echo bok;[[ -n $c ]] && echo cok;[[ -n $d ]] && echo dok;[[ -n $e ]] && echo eok;
dokeok
4 小括號 ( )
①命令組。括號中的命令將會新開乙個子shell順序執行,所以括號中的變數不能夠被指令碼餘下的部分使用。括號中多個命令之間用分號隔開,最後乙個命令可以沒有分號,各命令和括號之間不必有空格。
②命令替換。等同於`cmd`,shell掃瞄一遍命令列,發現了$(cmd)結構,便將$(cmd)中的cmd執行一次,得到其標準輸出,再將此輸出放到原來命令。有些shell不支援,如tcsh。
③用於初始化陣列。如:array=(a b c d)
5 雙小括號 (( ))
①整數擴充套件
②只要括號中的運算子、表示式符合c語言運算規則,都可用在$((exp))中
③重新定義變數值,比如 a=5; ((a++)) 可將$a 重定義為6
④for迴圈,for((i=0;i<5;i++))
⑤整數的條件判斷,如i=5;if (($i < 6));then echo ok;fi
6 大括號
①**塊,又被稱為內部組,如函式定義。
注意: {}的第乙個命令和左括號之間必須要有乙個空格
括號內的命令間用分號隔開,最後乙個也必須有分號。
②常用用法
for a in ;do echo $a ;done
touch .txt
touch 2015-04-0.txt
rm –f 2015-04-0.txt
注意{}內不允許有空格,否則將不起作用
如touch .txt,建立了兩個檔案
()和{}都是對一串的命令進行執行,區別:
①()只是對一串命令重新開乙個子shell進行執行
②{}對一串命令在當前shell執行
③()和{}都是把一串的命令放在括號裡面,並且命令之間用;號隔開
④()最後乙個命令可以不用分號
⑤{}最後乙個命令要用分號
⑥{}的第乙個命令和左括號之間必須要有乙個空格 ()裡的各命令不必和括號有空格
⑦()和{}中括號裡面的某個命令的重定向只影響該命令,但括號外的重定向則影響到括號裡的所有命令
[root@os logs]# name=mark
[root@os logs]# (name=chas;echo $name);echo $name
mark
chas
[root@os logs]# name=yasi
[root@os logs]# ;echo $name
yanan
yanan
[root@os logs]# | awk '『11
22[root@os logs]# (echo 1;echo 2) > test.txt
shell中的各種括號
在編寫shell scripts時,經常會用到括號,各種括號,各種用法。一 括號 圓括號 1 單小括號。命令組。括號中的命令將會新開乙個子shell順序執行,所以括號中的變數不能夠被指令碼餘下的部分使用。括號中多個命令之間用分號隔開,最後乙個命令可以沒有分號,各命令和括號之間不必有空格。命令替換。等...
shell中的各種括號用法
一 圓括號 1 建立程序列表 例如 pwd ls cd etc pwd cd pwd ls 最後輸出的值表示子shell的數目 ls ps echo bash subshell test.sh pid tty time cmd 11949 pts 2 00 00 00 bash 15482 pts ...
shell指令碼中的各種括號
shell程式設計中的括號大致有五種,分別是 接下來簡單的介紹以下它們的用法 var 100 var 101 echo var var 404 echo not found 如果var是404,輸出not found var 404if var eq 404 和下面一樣意思一樣 if test va...