jon*_*lam 3 unix variables bash shell parentheses
我是 Unix Shell 脚本的新手,我对在什么情况下必须使用这些类型的括号感到困惑。假设这abc
是一个由字符串组成的变量。有人可以举例说明如何使用这些括号以及何时应该使用它们吗?
abc
$abc
${abc}
$(abc)
($abc)
该$
字符用于表示要对后面的术语执行参数扩展。因此,如果外壳读取
abc
它将被解析为一个命令,shell 将尝试执行该命令。
如果外壳看到
$abc
它将parameter expansion
对文本执行abc
并有效地替换 abc 的值。
${abc}
还将执行参数扩展。当您有这样的表达式时,括号的使用变得很重要:
${abc}_sometext
相对
$abc_sometext
在第一个实例中,shell 将在 上执行参数扩展abc
。在第二个实例中,它将执行参数扩展abc_sometext
该$(
通知执行中括号什么并执行壳command substitution
。在这种情况下$
不用于parameter expansion
。因此,如果外壳读取以下内容:
$(abc)
shell 将执行abc
,它的输出将被替换到位,shell 将尝试执行该字符串。
(
简单地将命令分组并在子shell中执行它们。所以
(abc)
将执行,abc
但与$(abc)
它不同的是,无论命令的输出是什么,它都不会尝试执行。例如:
$ $(which ls)
Desktop Documents Downloads Mail Manjaro Music Pictures Public Templates Videos bin code tmp
$ (which ls)
/usr/bin/ls
$
Run Code Online (Sandbox Code Playgroud)