四 shell替換 變數 命令 轉義字元的替換

2021-08-05 21:19:07 字數 3758 閱讀 8398

(1)變數替換:

根據變數的狀態(是否定義,賦值,為空)來進行替換

形式         說明

$ 變數本來的值

$ 如果var變數為空或者已經被unset之後,返回hello,但是不改變var的值

$ 如果var變數為空或者已經被unset之後,返回hello,並將var的值設定為hello

$ 如果var變數為空或者已經被unset之後,則將message訊息送到標準錯誤輸出介面,主要用來檢查變數var是否可以被正常賦值

$ 如果變數var被定義之後,返回hello,但是不改變var的值

eg1:vi a.sh

#!/bin/bash

var=1

unset var

echo

$echo

"1---變數值是$"

結果:[root@h data]# chmod +x ./a.sh

[root@h data]# ./a.sh

變數不會被賦值

1--變數值是

eg2:

var="hello"

unset

varecho $

echo

"2---變數值是$"

結果:[root@h data]# vi a1.sh

[root@h data]# /bin/sh a1.sh

變數被賦值

2---變數值是變數被賦值

eg3:

var=1

unset

varecho $

echo

"3---變數值是$"

結果:[root@h data]# vi a2.sh

[root@h data]# /bin/sh a2.sh

3---變數值是

eg4:

var="hello shell"

echo $

echo

"4---變數值是$"

echo $

echo

"5---變數值是$"

結果:[root@h data]# vi a3.sh

[root@h data]# /bin/sh a3.sh

這是預設值

4---變數值是hello shell

hello shell

5---變數值是hello shell

eg5:

var="hello shell"

echo $

echo

"4---變數值是$"

unset

varecho $

echo

"5---變數值是$"

結果:[root@h data]# /bin/sh a4.sh

這是預設值

4---變數值是hello shell

a3.sh: line 6: var: message

(2)命令替換:

☞shell指令碼可以先執行命令,將輸出結果暫時儲存,在合適的地方輸出

命令替換的格式:

`命令`
[root@h data]# date

tuejun 27 19:02

:52cst 2017

[root@h data]# date

-s "20170727 09:50

:40"

thujul 27 09:50

:40cst 2017

eg1:

#!/bin/bash

d=`date`

echo

"d 是$d"

統計該虛擬機器的使用者數:

[root@h data]# who | wc -l

4

eg2:(把命令執行結果儲存到變數中)wordcount

#!/bin/bash

user=`who | wc -l`

echo

"登入的使用者數是$user"

eg3:

ls=`ls | wc`

echo "結果1:$ls"

l=`ls | wc -l`

echo "結果2:$l"

結果:[root@h data]# vi b2.sh

[root@h data]# /bin/sh b2.sh

結果1: 3

15146

結果2:3

3行(當前資料夾下檔案數),15個單詞,146個位元組,wc -l只輸出檔案行數

ls |wc 是統計你這個目錄下的檔案數目。

ls |wc -l是輸出第乙個結果即3 即檔案的數目。

[root@h data]# ls -l | wc -l

9[root@h data]# ls

a1.sh a2.sh a3.sh a.log a.sh b1.sh b2.sh b.sh

[root@h data]# ll (total 32-----32代表32位元組)

total 32

-rw-r--r--. 1 root root 83 jul 25

19:34 a1.sh

-rw-r--r--. 1 root root 77 jul 25

19:36 a2.sh

-rw-r--r--. 1 root root 141 jul 25

19:44 a3.sh

-rwxrwxrwx. 1 root root 23 jul 27

10:11 a.log

-rwxr-xr-x. 1 root root 98 jul 25

19:29 a.sh

-rw-r--r--. 1 root root 65 jul 27

09:58 b1.sh

-rw-r--r--. 1 root root 72 jul 27

10:03 b2.sh

-rwxr-xr-x. 1 root root 37 jul 27

09:54 b.sh

(3)轉義字元的替換

表示式裡含有特殊字元,shell將會進行替換

轉義字元    意義

\\ 反斜槓

\a 警報,響鈴

\b (backspace)刪除

\n 換行

\r 回車

\t (tab)8個位元組,乙個水平製表符

\v 垂直製表符

-e和不加-e都是禁止對特殊字元進行轉義

-n禁止換行,不可以寫換行符

-e表對轉義字元進行替換。

不加-e:

[root@h data]# ./a.sh 

好久不見,hello\n焦美琪

eg:

#!/bin/bash

var="hello"

echo

"好久不見,$"

echo

"焦美琪"

結果:[root@h data]# ./a.sh

好久不見,hello

焦美琪

shell變數的替換,命令的替換,轉義字元

1,shell變數的替換 變數可以根據變數是否為空或者被刪除,而被替換為特定的值 變數本來的值 var word 如果變數為空,或者已被刪除那麼返回word,但是不改變var的值 name xiaoming echo xiaoming s age is ech age xiaoming s age ...

shell中的命令替換和變數替換

可以用 command 也可以用 command 二者是有區別的,先看一下 command 注意 這裡不是引號,而反引號 下面這個是 command 變數替換可以根據變數的狀態 是否為空 是否定義等 來改變它的值,可以使用的變數替換形式 形式說明 變數本來的值 如果變數 var 為空或已被刪除 un...

shell指令碼變數替換

bin bash variable 1 me i love you,do you love me girl i don t love you,go away n 從變數開頭進行匹配,將符合匹配最短的字串刪除 echo befor delete variable 1 var1 echo after d...