📜  Shell 脚本 - 命令替换

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

Shell 脚本 - 命令替换

外壳是帮助用户与系统连接的接口。使用 shell 相当于与操作系统间接通信。在 Linux 分布式系统中,我们每次使用终端时,都会连接一个 shell。 shell 的工作是分析用户给出的 Unix 命令或指令。这个过程涉及从用户那里获取命令并将它们转换为内核可以轻松理解的形式。简而言之,它充当用户和操作系统内核之间的媒介。内核是计算机操作系统中最关键的部分。

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

例子:

在下面的程序中,我们首先创建了变量 num 并将其赋值为 20,然后在 echo 命令中将 num 的值替换为 100。

#!/bin/sh

num=100

echo -e "num: $num"

输出:

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

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

Escape SequencesSignificance
\rcarriage return
\thorizontal tab
\bbackspace
 \\backslash
 \n \n

命令替换:

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

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

句法:

seq START INCREMENT END  

返回类型:

例子:

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

#!/bin/sh

# your code goes here

seq 2 2 40

输出:

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

例子:

#!/bin/sh
# your code goes here
 
echo $(seq 2 2 40)

输出:

变量和命令扩展:

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

例子:

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

#!/bin/sh

variable1=$(echo 'Full form of gfg is' )

variable2=$(echo 'GeekforGeeks')

echo "$variable1 : $variable2"

输出:

命令替换中换行符的丢失:

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

例子:

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

#!/bin/sh

# your code goes here

seq 1 2 19

输出:

例子:

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

#!/bin/sh

# your code goes here

echo $(seq 1 2 39)

输出: