Bash 脚本 – 引号及其类型
bash 脚本中的引用是使变量或任何其他容器以将数据扩展为任何字符串中的字面量值的过程,引用也用于其他操作。 bash 脚本中有几种类型的引用技术。在本文中,我们将看到 Bash 脚本中不同类型的引用。
BASH 中的报价类型
- 单引号
- 双引号
- 返回报价
单引号:
通过使用单引号,字符串按原样解析,引号内没有任何字符扩展。因此,如果我们在字符串中有一个变量,则不会扩展该值,而是按原样解析字符。
假设我们有一个名为 name 的变量,我们尝试在单引号内回显它的值,我们需要使用 $ 来访问变量值。但是该值未打印,并且命令按原样回显。
#!/usr/bin/env bash
name="Jim"
echo 'This is $name, a developer'
输出:
所以,如果你想使用变量扩展和其他相关的东西,单引号不是很好。您可以关闭变量之前的引号,然后像连接一样再次打开,但它不适用于多个变量。
双引号:
为了扩展字符串中的变量值,我们使用双引号。使用双引号,我们可以通过在变量名称前加上 $ 来扩展变量的字面量面值,如前所述,使用变量名称访问值。
#!/usr/bin/env bash
name="Jim"
echo "This is $name, a developer"
输出:
因此,我们可以看到变量值被扩展并且命令按预期工作。变量值可以是整数、字符串或任何不可进一步扩展的字符。
不仅是变量扩展,嵌入双引号中的其他特殊字符也是如此。
#!/usr/bin/env bash
name="Jim"
age=23
languages=("python" "javascript" "java" "C" "Rust")
echo "This is $name, a $age old developer.
${languages[@]}
`pwd`
\" Hello WO\orld \" "
输出:
所以,这就是我们如何在双引号中执行变量扩展,我们甚至可以通过使用反斜杠来转义双引号中的字符。反斜杠运算符允许按原样解析下一个字符,而无需将其视为扩展的特殊字符或通配符运算符。
我们使用变量名和年龄来演示双引号内不同类型数据变量的扩展。我们甚至使用运算符来打印整个数组,即 ${array_name[@]}。我们还添加了反引号 (") 以在双引号内使用命令。最后,在这种情况下使用双引号 (“”) 转义这些字符的反斜杠字符。转义字符就是将字符解析为仅将其视为普通字符,而不允许将其作为特殊字符进行操作。您需要转义 a\ 的某些字符可能是 $、#、双引号、单引号等。
双引号中的转义字符
为了转义字符,我们可以在字符之前使用 \ 来解析它。例如,您需要打印 $ 符号,您需要键入 \$ 才能在双引号内按需要工作。我们使用 \" 来转义双引号,这样,我们在双引号内使用了双引号。因此,要解析字符而不执行特殊操作,我们需要使用 \ 来简单地打印它。
反引号(反引号):
在上一节中,我们使用了反引号来使用双引号内的命令。反引号允许我们在 shell 脚本中执行命令,它们不仅可以在双引号中使用,还可以在脚本中独立使用。
#!/usr/bin/env bash
echo `python --version`
echo `cat wh.txt`
echo `date`
输出:
正如我们在这里看到的,我们可以从脚本执行命令。这些是可以在命令提示符内执行的命令,是的,您可以使用脚本中的某些命令,例如 cat、pwd 等,但并非所有命令都可以在脚本中使用。为了执行这些命令,我们可以使用反引号(` `)。正如我们在前面的双引号示例中看到的那样,它们也可以嵌套在双引号中。
因此,这些是我们在 shell 脚本中用于扩展变量、执行命令以及从 shell 脚本执行和执行其他操作/脚本的引用技术。引用可用于对某些命令进行编程,并在需要时通过将命令嵌入适当的引号中来执行/扩展它们。