linux shell特殊字符詳解

()  : 創建成組的命令
1)  一組由圓括號括起來的命令是新開一個子shell來執行的

因爲是在子shell裏執行,在圓括號裏的變量不能被腳本的其他部分訪問。因爲父進程(即腳本進程)不能存取子進程(即子shell)創建的變量

            (a=hello; echo $a)

2)  數組初始化.

Array=(element1 element2 element3)

 (( )) : 擴展並計算(( ))裏的整數表達式, 不能用來做浮點計算.

     {} : 創建命令塊

1)  這個結構也是一組命令代碼塊,事實上,它是匿名的函數。然而與一個函數所不同的,在代碼塊裏的變量仍然能被腳本後面的代碼訪問。

2)  不像一個用圓括號括起來的命令組,一個用花括號括起的代碼塊不會以一個子shell運行。

“”: 部分引用——可以解釋引號中的變量

    ‘’: 完全引用——引號內所有的內容都是常量

   : :空操作——什麼都不做。一般用在腳本中。

1)  在必須要有兩元操作的地方作爲一個分隔符

: ${username=`whoami`}

# ${username=`whoami`}   如果沒有開頭的:,將會出錯,除非"username"是一個外部命令或是內建命令.

2)  參數替換中爲字符串變量賦值

: ${HOSTNAME?} ${USER?} ${MAIL?}

#  如果列出的一個或多個基本的環境變量沒有設置,將打印出錯信息。

 [] : 測試[ ]中的表達式.

數組元素——數組的上下文中,方括號表示數組的每個元素的數字編號.

[[]] : 測試[[]]中的表達式.

1)  [[]]之間的所有的字符都不會被文件擴展或是標記分割,但是會有參數引用和命令替換。

2)  ` `.``.``.` `測試結構比用[ ... ]更能防止腳本里的許多邏輯錯誤。比如說,&&,||,<>操作符能在一個[[]]測試裏通過,但在[]結構會發生錯誤。

<< :在here document中使用的重定向.  

<<<:在here string中使用的重定向.

      -:

1) 用於stdinstdout重定向的源或目的

 (cd /source/directory && tar cf - . ) | (cd /dest/directory && tar xpvf -)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章