在BASH配置文件中定义变量的最佳实践

问题描述 投票:0回答:1

我在http://wiki.bash-hackers.org/howto/conffile中读到,建议在BASH配置文件中的值中加上双引号,这些文件将被输入到脚本中。

要获取的文件应格式化为key =“value”格式,否则bash将尝试解释命令

但是,如果值具有双引号,假设该值中没有空格,我在发现配置文件时,BASH的行为没有任何区别。我确信有一些更复杂的情况,其中双引号是至关重要的(例如使用其他变量作为值),但对于下面的简单情况,双引号会导致BASH的行为有所不同,即使差异仅落后-THE幕后?我想知道下面的第一个配置文件是否可能导致BASH在将其指定为字符串之前搜索命名的foobar,但是从我的测试中它似乎没有这样做。

# Configuration file 1
myDir=/var/tmp/test/
myString=foobar
myInteger=20

# Configuration file 2
myDir="/var/tmp/test/"
myString="foobar"
myInteger="20"

source configurationFile1
echo "$myDir"
echo "$myString"
echo "$myInteger"

source configurationFile2
echo "$myDir"
echo "$myString"
echo "$myInteger"
bash configuration
1个回答
1
投票

这是一个风格问题。在您显示的示例中,引号并非绝对必要。 myDir=/var/tmp/textmyDir="/var/tmp/text"完全一样。其他值可能需要引号才能使分配正确。

暗示这些事实并非真正的配置文件;它们只是bash脚本,旨在仅包含任务。就像是

foo=bar baz

不是任务;这是一个简单的命令,试图在其环境中使用名为baz的变量运行foo。在这里,报价是必需的:

foo="bar baz"

进行正确的分配,与其他“实际”配置文件格式相反,其中=之后的所有内容(以及可选的一些post-=空格`)都被视为要分配的值的一部分。

© www.soinside.com 2019 - 2024. All rights reserved.