Unix / Linux – 外壳替换

Unix / Linux – 外壳替换


什么是替代?

当 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. 转义和描述
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 程序员能够根据变量的状态操作变量的值。

以下是所有可能替换的下表 –

Sr.No. 表格和说明
1

${var}

替换var的值

2

${var:-word}

如果var为 null 或未设置,则用word替换varvar的值不会改变。

3

${var:=word}

如果var为 null 或未设置,则将var设置为word的值

4

${var:?message}

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

5

${var:&plusword}

如果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

觉得文章有用?

点个广告表达一下你的爱意吧 !😁