shell中的各種括號

2021-07-12 06:18:27 字數 2362 閱讀 3742

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...