我想正确导出一个变量。为了做到这一点,我必须理解语法的几种变体。我已经看到了以下导出变量的机制。在这种情况下我使用.bashrc
:
export MY_VARIABLE=$USER/.gradle
--$export MY_VARIABLE="$USER/.gradle"
- 引号export MY_VARIABLE=USER/.gradle
--没有$export $MY_VARIABLE=$USER/.gradle
--所有的$
在这些情况下 $ 符号有什么意义?为什么有时使用有时不使用?
如果路径中没有空格,我们是否需要引号?如果 $USER 中包含的路径包含空格怎么办?
为什么导出的左边没有$?
答案1
export
、等标记declare
明确使用变量名称作为参数。 $
一般可以理解为“the value of”的意思,所以$variable
意思是“the value of variable
”。执行这组命令:
foo=bar
bar=baz
export $foo
( echo "$foo" )
这里将发生的是,您将得到一个空行输出。这是因为在export
命令中,$foo
实际上是bar
( 的值foo
),所以实际执行的命令是export bar
。由于foo
未导出,因此其默认值为 null。但是,如果最后一行是:
( echo "$bar" )
您将得到 的输出baz
,其值bar
已被export
编辑到即将到来的子 shell 中。
通常,使用弱引号 (" "
")是一个非常好的主意全部您的变量引用的原因包括但不限于您提到的原因(即文件名和路径中的空格)。例如,如果我们有:
if [ $letter == a ]; then echo "ayyyy"; fi
但letter
都是空的,shell 会尝试执行
if [ == a ]
这是一个语法错误,但带有引号:
if [ "$letter" == a ];
变成
if [ "" == a ];
这是有效的。