bash中$ VAR $ {VAR}和$(VAR)之间有什么区别? [重复]
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了bash中$ VAR $ {VAR}和$(VAR)之间有什么区别? [重复]相关的知识,希望对你有一定的参考价值。
这个问题在这里已有答案:
我在~/.bashrc
中设置了一个变量:
ABCHOME=/root/abc
export ABCHOME
当我在终端输入以下命令时,它响应如下:
echo $ABCHOME
/root/abc
echo ${ABCHOME}
/root/abc
echo $(ABCHOME)
bash: ABCHOME: command not found...
为什么第三个命令没有给我答案/root/abc
?
答案
我们一次拿一个命令:
echo $ABCHOME
$
是一元运算符,表示要进行扩展(或“替换”,如果你喜欢)。没有括号,它给出了后面变量的值。如果变量值包含空格,那么该空格将用作命令的参数分隔符,因此我建议:
echo "$ABCHOME"
注意:双引号不单。与括号一样,不同的引号字符有不同的用途。
使用{ }
:
echo ${ABCHOME}
没有其他字符时,大括号用于在嵌入其他文本时分隔变量名称,并且很少需要(尽管它们是良性的)。例如:echo "$ABCHOMEandaway"
会失败,但echo "${ABCHOME}andaway"
会将“andaway”附加到值文本中。带引号的建议也适用于此处。
大括号,${ }
还引入了其他变量扩展语法,当变量名后跟一个特殊字符,如冒号:
或/
。这对你来说可能太高级了,把它放在你的清单上以便以后学习。
使用$( )
:
echo $(ABCHOME)
此扩展是命令替换,其中运行括号内指定的命令并捕获标准输出并将其返回到脚本。当然,没有名为ABCHOME
的命令,所以你得到:
bash: ABCHOME: command not found
作为一般规则,在任何编程语言中都不能不经思考地交换括号。 Bash语法可能很复杂且不直观。按照教程(有很多可用的)。一定要玩,但使用man bash
页面来发现您正在使用的语法。
以上是关于bash中$ VAR $ {VAR}和$(VAR)之间有什么区别? [重复]的主要内容,如果未能解决你的问题,请参考以下文章