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

时间:2018-09-11 16:07:28

标签: bash configuration

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

  

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

但是,假设值中没有空格,那么无论该值是否带有双引号,我都不知道BASH在获取配置文件时的行为有何不同。我确信在某些更复杂的情况下,双引号至关重要(例如,使用其他变量作为值),但是对于下面的简单情况,双引号会导致BASH的行为有所不同,即使差异仅在后面场景?我想知道下面的第一个配置文件是否可能导致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"

1 个答案:

答案 0 :(得分:1)

这是一个样式问题。在您显示的示例中,引号不是严格必需的。 myDir=/var/tmp/textmyDir="/var/tmp/text" 完全一样。其他值可能需要加引号以使分配正确。

暗示这些不是真正的配置文件;它们只是预期仅包含分配的bash脚本。像

foo=bar baz

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

foo="bar baz"
与其他“实际”配置文件格式相反,

进行适当的分配,在这些配置文件格式中,=之后的所有内容(以及可选的某些=后空格)都被认为是该值的一部分分配。

相关问题