我在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"
这是一个风格问题。在您显示的示例中,引号并非绝对必要。 myDir=/var/tmp/text
和myDir="/var/tmp/text"
完全一样。其他值可能需要引号才能使分配正确。
暗示这些事实并非真正的配置文件;它们只是bash
脚本,旨在仅包含任务。就像是
foo=bar baz
不是任务;这是一个简单的命令,试图在其环境中使用名为baz
的变量运行foo
。在这里,报价是必需的:
foo="bar baz"
进行正确的分配,与其他“实际”配置文件格式相反,其中=
之后的所有内容(以及可选的一些post-=
空格`)都被视为要分配的值的一部分。