通常對於弱型別的程式語言來說,變數的功能都比較單薄。但是對於shell來說,變數的功能卻非常強大。為了加強變數的功能,shell對變數的使用方法進行了極大的擴充套件。本節將介紹其中的引用和替換。所謂引用,就是指將字串用引號包括起來,以防止其中的特殊字元被shell解釋為其他含義。在shell中,一共有4種引用符號,如下表所示,
引用符號
說明雙引號
除$、單引號、反引號和反斜線之外,其他的字元都保留字面意思
單引號所有的字元都保留字面意思
反引號反引號中的字串將被解釋為shell命令
反斜線轉義字元,遮蔽後面字元的特殊意義
注意:雙引號引用時,除$、單引號、反引號和反斜線之外,其他的字元都保留字面意思.在shell語句裡面,當乙個字串被
單引號
引用起來以後,其中所有的字元,除了單引號之外,都被解釋為字面意識,也就是字元本身的含義。這意味著被單引號引用起來的所有字元都將被解釋為普通的字元
,因此,這種引用稱為全引用。
演示使用全引用的用法,
#! /bin/bash
#定義變數
v1="xiaowang"
#全引用輸出含有變數名的字串
echo
'hello , $v1'
該程式的執行結果如下,
hello , $v1
如果使用者使用雙引號將字串引用起來,則其中所包含的字元除美元符號(),
反引號(
『),以
及反斜線
(\)之外
的所有其
他字元,
都將被解
釋為字面
意識,這
就稱為部
分引用。
∗∗也就
是說,在
部分應用
中美元符
號,反引
號,以及
反斜線仍
具有特殊
的含義。
∗∗例如
,"」符號,可以用來引用變數的值。
演示部分引用的用法,
#! /bin/bash
#定義變數
v1="xiaowang"
#全引用輸出含有變數名的字串
echo
"hello , $v1"
改程式的執行結果如下,
hello , xiaowang
所謂命令替換,是指在shell程式裡面將某個shell命令的執行結果賦值給某個變數。
在bash中,有兩種語法可以進行命令的替換,分別使用反引號和圓括號。
`shell_command`
$(shell_command)
上面的語法是等價的,使用者可以根據自己的習慣選擇。
演示使用反引號的使用方法,
#! /bin/bash
#變數替換
v1=`pwd`
# v1=$(pwd)
#輸出變數的數值
echo
"current working dir is $v1"
改程式的執行結果,
current working dir is /root
轉義的作用主要是轉換某些特殊的字元的意義
。當反斜線後面的乙個字元具有特殊的意義時,反斜線將遮蔽該字元的特殊含義,使得shell按照該字元的字面意義來解釋。例如,下面的例子可以看到轉義的作用
[root@vm_114_176_centos /]# echo $shell
/bin/bash
[root@vm_114_176_centos /]# echo \$shell
$shell
shell中的命令替換和變數替換
可以用 command 也可以用 command 二者是有區別的,先看一下 command 注意 這裡不是引號,而反引號 下面這個是 command 變數替換可以根據變數的狀態 是否為空 是否定義等 來改變它的值,可以使用的變數替換形式 形式說明 變數本來的值 如果變數 var 為空或已被刪除 un...
linux中的shell程式設計中的命令替換
編寫如下指令碼進行測試 bin bash index 1 for user in cat etc passwd cut d f 1 doecho this is the index user user index index 1 done其中cut d f 1 中的 d指定分隔符為 f 1 指定分隔...
Shell命令中的擴充套件和替換
shell的強大,很大程度上得益於對命令列做了額外的處理,你可以再命令中嵌入其他命令,在引數中嵌入其他命令,或者嵌入變數,插入路徑萬用字元,插入表示式,shell都能幫你處理的很好,就因為shell能做這些,所以shell才如此強大。廢話少說,直接開始。首先還是要囉嗦兩句,說說shell處理命令的過...