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命令中使用的转义序列 :

Sr.No.Escape&描述
1

\\

反斜杠

2

\ a

警告(BEL)

3

\ b

退格

4

\ c

抑制尾随换行

5

\f

表单Feed

6

\ n

新行

7

\ r

回车

8

\t

水平标签

9

\v

垂直标签

您可以使用 -E 选项禁用反斜杠转义的解释(默认).

您可以使用 -n 禁用插入新行的选项.

命令替换

命令替换是shell执行给定命令集的机制然后在命令位置替换它们的输出.

语法

命令替换是在命令为&minus时执行的;

`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程序员能够根据其状态操作变量的值.

下面是所有可能的替换和下面的表格.

Sr.No.Form&描述
1

$ {var}

替换 var 的值.

2

$ {var :-word}

如果 var 为null或未设置, word 将替换 var . var 的值不会改变.

3

$ {var:= word}

如果 var 为空或未设置, var 设置为 word 的值.

4

$ {var: ?message}

如果 var 为空或未设置,则消息将打印为标准错误.这将检查变量是否设置正确.

5

$ {var:+ word}

如果 var 设置, word 代替var. var 的值不会改变.

示例

以下示例显示上述替换的各种状态 :

#!/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