在bash导出语句中使用双引号

问题描述 投票:5回答:3

你好,我在看一本关于bash脚本的书,作者说要在我的.bashrc文件末尾添加以下内容。 export PATH=~/bin:"$PATH" 以便在命令行输入文件名来执行我的文件。 但是我注意到,如果我把 export PATH=~/bin:$PATH 我也可以达到同样的效果。 所以我的问题是带引号的和不带引号的有什么区别吗,谢谢。

bash
3个回答
4
投票

你必须包含变量 PATH 内的双引号。因此,它将处理有空格但没有双引号的文件路径,它不会处理有空格的文件名。


6
投票

双引号不会有任何影响,但也不是必须的。赋值是由shell特别处理的。从手册中可以看到。

变量可以通过如下形式的语句进行赋值:

          name=[value]

如果没有给定值,变量被分配为空字符串。 所有的值都要经过 符号扩展,参数和变量扩展,命令替换,算术扩展,以及引号删除。 (见下面的扩展)。

请注意,分词和生成路径名不在黑体字的列表中。这两种类型的扩展是你试图通过引用参数扩展来防止的,但在这个上下文中,它们不会被执行。同样的规则也适用于传递给 export 内置命令。


0
投票

我在尝试将JSON字符串分配给终端中的一个变量时也面临同样的问题。

用单引号或双引号来包裹它

如果你的字符串包含双引号,则使用单引号,反之亦然。

$ export TEMP_ENV='I like the "London" bridge'
$ echo $TEMP_ENV
>> I like the "London" bridge


$ export TEMP_ENV="I like the 'London' bridge"
$ echo $TEMP_ENV
>> I like the 'London' bridge
© www.soinside.com 2019 - 2024. All rights reserved.