shell中括號的特殊用法

2022-08-17 04:33:18 字數 2195 閱讀 9022

shell中的括號有其特殊的用法, 現總結如下:

1. 符號$後的括號

$ 變數a的值, 在不引起歧義的情況下可以省略大括號.

$(cmd) 命令替換, 結果為shell命令cmd的輸出, 和`cmd`效果相同, 不過某些shell版本不支援$()形式的命令替換, 如tcsh.

$((exp)) 和`expr exp`效果相同, 計算數學表示式exp的數值, 其中exp只要符合c語言的運算規則即可, 甚至三目運算子和邏輯表示式都可以計算.

a=1;b=2echo $[ a + b ]  的值會是3,效果同`expr exp`和$((exp)),其中$[ a + b ]中括號和變數間的空格可以不要,即$[a+b]

2. 多條命令執行

(cmd1;cmd2;cmd3) 新開乙個子shell順序執行命令cmd1,cmd2,cmd3, 各命令之間用分號隔開, 最後乙個命令後可以沒有分號.

在當前shell順序執行命令cmd1,cmd2,cmd3, 各命令之間用分號隔開, 最後乙個命令後必須有分號, 第一條命令和左括號之間必須用空格隔開.

對{}和()而言, 括號中的重定向符只影響該條命令, 而括號外的重定向符影響到括號中的所有命令.

3. 雙括號的特殊用法

(()) 增強括號的用法, 常用於算術運算比較. 雙括號中的變數可以不使用$符號字首, 只要括號中的表示式符合c語言運算規則, 支援多個表示式用逗號分開.

比如可以直接使用for((i=0;i<5;i++)), 如果不使用雙括號, 則為for i in `seq 0 4`或者for i in .

再如可以直接使用if (($i<5)), 如果不使用雙括號, 則為if [ $i -lt 5 ].

增強方括號用法, 常用於字串的比較. 主要用於條件測試, 雙括號中的表示式可以使用&&, ||, <, >等c語言語法.

比如可以直接使用if [[ $a != 1 && $a != 2 ]], 如果不適用雙括號, 則為if [ $a -ne 1] && [ $a != 2 ]或者if [ $a -ne 1 -a $a != 2 ].

shell中的括號有其特殊的用法, 現總結如下:

1. 符號$後的括號

$ 變數a的值, 在不引起歧義的情況下可以省略大括號.

$(cmd) 命令替換, 結果為shell命令cmd的輸出, 和`cmd`效果相同, 不過某些shell版本不支援$()形式的命令替換, 如tcsh.

$((exp)) 和`expr exp`效果相同, 計算數學表示式exp的數值, 其中exp只要符合c語言的運算規則即可, 甚至三目運算子和邏輯表示式都可以計算.

a=1;b=2echo $[ a + b ]  的值會是3,效果同`expr exp`和$((exp)),其中$[ a + b ]中括號和變數間的空格可以不要,即$[a+b]

2. 多條命令執行

(cmd1;cmd2;cmd3) 新開乙個子shell順序執行命令cmd1,cmd2,cmd3, 各命令之間用分號隔開, 最後乙個命令後可以沒有分號.

在當前shell順序執行命令cmd1,cmd2,cmd3, 各命令之間用分號隔開, 最後乙個命令後必須有分號, 第一條命令和左括號之間必須用空格隔開.

對{}和()而言, 括號中的重定向符只影響該條命令, 而括號外的重定向符影響到括號中的所有命令.

3. 雙括號的特殊用法

(()) 增強括號的用法, 常用於算術運算比較. 雙括號中的變數可以不使用$符號字首, 只要括號中的表示式符合c語言運算規則, 支援多個表示式用逗號分開.

比如可以直接使用for((i=0;i<5;i++)), 如果不使用雙括號, 則為for i in `seq 0 4`或者for i in .

再如可以直接使用if (($i<5)), 如果不使用雙括號, 則為if [ $i -lt 5 ].

增強方括號用法, 常用於字串的比較. 主要用於條件測試, 雙括號中的表示式可以使用&&, ||, <, >等c語言語法.

比如可以直接使用if [[ $a != 1 && $a != 2 ]], 如果不適用雙括號, 則為if [ $a -ne 1] && [ $a != 2 ]或者if [ $a -ne 1 -a $a != 2 ].

shell中括號的特殊用法

shell中的括號有其特殊的用法,現總結如下 1.符號 後的括號 變數a的值,在不引起歧義的情況下可以省略大括號.cmd 命令替換,結果為shell命令cmd的輸出,和 cmd 效果相同,不過某些shell版本不支援 形式的命令替換,如tcsh.exp 和 expr exp 效果相同,計算數學表示式...

shell中括號的用法

test 因為 shell 和我們通常程式語言不同,更多的情況是和它互動,總是呼叫別人。所以有些本屬於程式語言本身的概念在 shell 中會難以理解。基本功 不好,更容易 犯睏 了,我就是乙個 以 bash 為例 其他相容 shell 差不多 1.test 和 是 bash 的內部命令,gnu li...

shell 中括號的用法

test 因為 shell 和我們通常程式語言不同,更多的情況是和它互動,總是呼叫別人。所以有些本屬於程式語言本身的概念在 shell 中會難以理解。基本功 不好,更容易 犯睏 了,我就是乙個 以 bash 為例 其他相容 shell 差不多 1.test 和 是 bash 的內部命令,gnu li...