來源 https://www.cnblogs.com/fhefh/archive/2011/04/16/2017895.htmlhtml
bash下有不少像{}、[]等一些符號命令,下面是我對一些經常使用的符號命令的學習筆記,如有錯誤或紕漏望各位兄弟指正。
1、.(source)
.(點)與source命令同樣,從文件中讀取並執行命令,不管該文件是否都有可執行權限都可以正確的執行。且是在當前shell下執行,而不是產生一個子shell來執行(咱們一般使用「./filename.sh」去執行一個文件是在當前shell下產生一個子shell去執行的)。因此在設置bash的環境的變量時,就必須用該命令或者source命令去執行設置的環境變量纔會對當前shell生效,以下:
shell
|
2、:
: 該命令什麼都不作,但執行後會返回一個正確的退出代碼,即exit 0。好比在if語句中,then後面不想作任何操做,可是又不能空着,這時就可使用「:」來解決,以下:
學習
|
3、()
() 將多個命令組合在一塊兒執行,至關於一個命令組。
4、{}
{} 和()相似,也是將多個命令組合在一塊兒。它們之間的區別是,()是在產生的子shell下執行,而{}是在當前的shell下執行。這與前面講到是使用". filename.sh"和"./filename.sh"的區別同樣。舉一個很簡單的例子:
spa
|
從上面的示例能夠看出,當在()中賦值的變量,影響的只是自身的子shell,而不能將該值賦給父shell,由於「父親不能繼承兒子」。而在{}中賦值的變量,由於就在當前的shell執行的,因此就能改變原來變量的值。
注意:()裏面兩邊能夠不使用空格,{}裏面兩邊必須使用空格,且最後一個命令也須要以「;」結尾,表示命令結束。
5、[](test)
[] 與test命令同樣,用於比較值以及檢查文件類型。以下:
一、[ "$A" = 123 ]:是字符串的測試,以測試 $A 是否爲 一、二、3 這三個連續的"文字"。
二、[ "$A" -eq 123 ]:是整數的測試,以測試 $A 是否等於"一百二十三"。
三、[ -e "$A" ]:是關於文件的測試,以測試 123 這份"文件"是否存在。
6、[[]]
[[]]能夠說是[]的「加強版」,它可以將多個test命令支持的測試組合起來,例如:
htm
|
至於這二者的區別有位仁兄已經寫的很清楚了,我將其整理一下:
|
SPAN style="COLOR: rgb(0,1,2)">一致 |
拿這二者對字符串的測試舉一個例子,以下:
|
字符串的比較是根據相應的ASCII碼來比較的,因此a>1是成立的。若是有興趣也能夠思考一下爲何會出現下面的結果?
|
7、(())
(())專門來作數值運算,若是表達式求值爲 0,則設置退出狀態爲 1;若是求值爲非 0 值,則設置爲 0。不須要對 ((
和 ))
之間的操做符轉義。算術只對整數進行。除 0 會產生錯誤,但不會產生溢出。能夠執行 C 語言中常見的算術、邏輯和位操做。以下:
|
也能:
|
除此以外,也可使用$(())直接進行數值運算,以下:
|
注意:使用 (( )) 時,不須要空格分隔各值和運算符,使用[]和[[ ]] 時須要用空格分隔各值和運算符。
===================== End