Shell程式設計中的引用和替換

2021-07-31 10:31:36 字數 2102 閱讀 4586

通常對於弱型別的程式語言來說,變數的功能都比較單薄。但是對於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處理命令的過...