Unix/Linux - Shell 替換



什麼是替換?

當shell遇到包含一個或多個特殊字元的表示式時,它會執行替換操作。

示例

這裡,變數的列印值被其值替換。同時,"\n" 被換行符替換 -

#!/bin/sh

a=10
echo -e "Value of a is $a \n"

您將收到以下結果。這裡-e選項啟用反斜槓轉義符的解釋。

Value of a is 10

以下是沒有-e選項的結果 -

Value of a is 10\n

以下是在 echo 命令中可使用的轉義序列:

序號 轉義符 & 說明
1

\\

反斜槓

2

\a

警報 (BEL)

3

\b

退格

4

\c

抑制尾隨換行符

5

\f

換頁

6

\n

換行

7

\r

回車

8

\t

水平製表符

9

\v

垂直製表符

您可以使用-E選項停用反斜槓轉義符的解釋(預設值)。

您可以使用-n選項停用插入換行符。

命令替換

命令替換是一種機制,shell 透過該機制執行給定的命令集,然後將其輸出替換到命令的位置。

語法

當命令如下給出時,將執行命令替換:

`command`

執行命令替換時,請確保使用反引號,而不是單引號。

示例

命令替換通常用於將命令的輸出賦給變數。以下每個示例都演示了命令替換:

#!/bin/sh

DATE=`date`
echo "Date is $DATE"

USERS=`who | wc -l`
echo "Logged in user are $USERS"

UP=`date ; uptime`
echo "Uptime is $UP"

執行後,您將收到以下結果:

Date is Thu Jul  2 03:59:57 MST 2009
Logged in user are 1
Uptime is Thu Jul  2 03:59:57 MST 2009
03:59:57 up 20 days, 14:03,  1 user,  load avg: 0.13, 0.07, 0.15

變數替換

變數替換使shell程式設計師能夠根據變數的狀態來操作變數的值。

以下是所有可能的替換的表格:

序號 形式 & 說明
1

${var}

替換var的值。

2

${var:-word}

如果var為空或未設定,則用var替換wordvar的值不會改變。

3

${var:=word}

如果var為空或未設定,則將var設定為word的值。

4

${var:?message}

如果var為空或未設定,則將message列印到標準錯誤。這用於檢查變數是否正確設定。

5

${var:+word}

如果var已設定,則用var替換wordvar的值不會改變。

示例

以下示例顯示了上述替換的各種狀態:

#!/bin/sh

echo ${var:-"Variable is not set"}
echo "1 - Value of var is ${var}"

echo ${var:="Variable is not set"}
echo "2 - Value of var is ${var}"

unset var
echo ${var:+"This is default value"}
echo "3 - Value of var is $var"

var="Prefix"
echo ${var:+"This is default value"}
echo "4 - Value of var is $var"

echo ${var:?"Print this message"}
echo "5 - Value of var is ${var}"

執行後,您將收到以下結果:

Variable is not set
1 - Value of var is
Variable is not set
2 - Value of var is Variable is not set

3 - Value of var is
This is default value
4 - Value of var is Prefix
Prefix
5 - Value of var is Prefix
廣告