Bash 脚本 – 命令替换
为了理解命令替换,让我们首先讨论 shell 脚本中的替换。替换是一种功能,通过它我们可以指示 shell 替换表达式的实际值。
例子:
在下面的程序中,我们首先创建了变量 str 并为其赋值“GeeksforGeeks”,然后在 echo 命令中替换字符串str (“GeeksforGeeks”) 的值。
//myStript.sh
#!/bin/sh
str='GeeksforGeeks'
echo -e "str: $str"
输出:
本文重点介绍 Bash 脚本中使用的命令替换技术。
有一些字符序列并不代表它们的真实性质,但它们对操作系统具有特殊意义,这些序列被称为转义序列。在命令中使用它们时,它们将被实际值替换。Escape Sequences Significance \n new line \r carriage return \t horizontal tab \b backspace \\ backslash
命令替换
命令替换是程序员在 bash 脚本中遵循的一种机制。在这种机制中,命令的输出会替换命令本身。 Bash 通过执行命令然后用命令的标准输出替换命令替换来操作扩展。简而言之,UNIX 命令的输出被捆绑,然后用作命令。
为了更好地理解它,让我们考虑一个例子。 Linux 中的 seq 命令用于以 INCREMENT 为步长打印从 START 到 END 的数字。
句法:
seq START INCREMENT END
返回类型:
Prints numbers from START to END each in the new line by the difference of INCREMENT.
例子:
在下面的脚本中,我们打印从 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)
输出: