你好,我在看一本关于bash脚本的书,作者说要在我的.bashrc文件末尾添加以下内容。 export PATH=~/bin:"$PATH"
以便在命令行输入文件名来执行我的文件。 但是我注意到,如果我把 export PATH=~/bin:$PATH
我也可以达到同样的效果。 所以我的问题是带引号的和不带引号的有什么区别吗,谢谢。
你必须包含变量 PATH
内的双引号。因此,它将处理有空格但没有双引号的文件路径,它不会处理有空格的文件名。
双引号不会有任何影响,但也不是必须的。赋值是由shell特别处理的。从手册中可以看到。
变量可以通过如下形式的语句进行赋值:
name=[value]
如果没有给定值,变量被分配为空字符串。 所有的值都要经过 符号扩展,参数和变量扩展,命令替换,算术扩展,以及引号删除。 (见下面的扩展)。
请注意,分词和生成路径名不在黑体字的列表中。这两种类型的扩展是你试图通过引用参数扩展来防止的,但在这个上下文中,它们不会被执行。同样的规则也适用于传递给 export
内置命令。
我在尝试将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