歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> SHELL編程 >> Linux shell特殊字符詳解

Linux shell特殊字符詳解

日期:2017/2/28 15:43:10   编辑: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) 用於stdin或stdout重定向的源或目的

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

Copyright © Linux教程網 All Rights Reserved