我在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"
答案 0 :(得分:1)
这是一个样式问题。在您显示的示例中,引号不是严格必需的。 myDir=/var/tmp/text
和myDir="/var/tmp/text"
完全一样。其他值可能需要加引号以使分配正确。
暗示这些不是真正的配置文件;它们只是预期仅包含分配的bash
脚本。像
foo=bar baz
不是 分配;这是一个简单的命令,试图在其环境中使用名为baz
的变量运行foo
。在这里,引号 是必需的:
foo="bar baz"
与其他“实际”配置文件格式相反,进行适当的分配,在这些配置文件格式中,=
之后的所有内容(以及可选的某些=
后空格)都被认为是该值的一部分分配。