📜  Bash 脚本 – 命令替换

📅  最后修改于: 2022-05-13 01:57:28.017000             🧑  作者: Mango

Bash 脚本 – 命令替换

为了理解命令替换,让我们首先讨论 shell 脚本中的替换。替换是一种功能,通过它我们可以指示 shell 替换表达式的实际值。

例子:

在下面的程序中,我们首先创建了变量 str 并为其赋值“GeeksforGeeks”,然后在 echo 命令中替换字符串str (“GeeksforGeeks”) 的值。

//myStript.sh

#!/bin/sh
 
str='GeeksforGeeks'
echo -e "str: $str"

输出:

替代

本文重点介绍 Bash 脚本中使用的命令替换技术。

有一些字符序列并不代表它们的真实性质,但它们对操作系统具有特殊意义,这些序列被称为转义序列。在命令中使用它们时,它们将被实际值替换。

Escape SequencesSignificance
 \nnew line
\rcarriage return
\thorizontal tab
\bbackspace
 \\backslash

命令替换

命令替换是程序员在 bash 脚本中遵循的一种机制。在这种机制中,命令的输出会替换命令本身。 Bash 通过执行命令然后用命令的标准输出替换命令替换来操作扩展。简而言之,UNIX 命令的输出被捆绑,然后用作命令。

为了更好地理解它,让我们考虑一个例子。 Linux 中的 seq 命令用于以 INCREMENT 为步长打印从 START 到 END 的数字。

句法:

seq START INCREMENT END  

返回类型:

例子:

在下面的脚本中,我们打印从 2 到 20 的数字,相差 2。换句话说,我们打印最多 20 的偶数。

#!/bin/bash
# your code goes here
 
seq 2 2 20

输出:

命令替换

我们可以将上述命令的输出用作新命令。考虑下面的脚本,

例子:

#!/bin/bash
# your code goes here
 
echo $(seq 2 2 20)

输出:

命令替换

变量和命令扩展

在命令替换的过程中,命令的输出可以赋值给一个变量,就像任何其他值一样。

例子:

在下面的脚本中,我们将 echo 命令的结果分别分配给变量中的两个字符串“varaiable1”和“variable2”。然后我们在 echo 命令中使用了这些变量。

#!/bin/bash

variable1=$(echo 'Full form of gfg is' )
variable2=$(echo 'GeekforGeeks')
echo "$variable1 : $variable2"

输出:

变量和命令扩展

命令替换中的换行符丢失

在命令替换机制中,如果正在被替换的命令的输出包含任何尾随换行符,则在这种情况下,尾随换行符在替换后被删除。请注意,嵌入的换行符不会被删除,但它们可能会在分词过程中被删除。

例子:

在这个脚本中,我们使用 seq 命令。现在 seq 命令将数字打印到控制台,并在每个数字打印到控制台后附加一个字符。

#!/bin/bash
# your code goes here
 
seq 1 2 19

输出:

命令替换中的换行符丢失

例子:

在此脚本中,我们使用了上述命令的结果并将其替换为命令。正如您在输出中看到的,从 1 到 19 的数字与 2 的差值被打印到控制台。但是这次它们都打印在没有任何字符的同一行上。

#!/bin/bash
# your code goes here
 
echo $(seq 1 2 19)

输出:

命令替换中的换行符丢失