从功能装载我作为配置中使用:配置文件在bash
# config
servers=(
[vagrant.host]=192.168.20.20
[vagrant.port]=22
[vagrant.user]=ubuntu
[vagrant.identity]=~/.ssh/id_rsa
[vagrant.cwd]=/home/ubuntu/website
)
,我使用从我的主脚本加载:
declare -A servers
. config
echo "${servers["vagrant.host"]}" # prints 192.168.20.20
如果该代码不在一个很好的功能,但我不需要总是加载配置文件,我把加载代码放在一个函数中。当我调用如下所示的函数时,我收到一个错误。
function loadConfig {
declare -A servers
. config
}
loadConfig
echo "${servers["vagrant.host"]}"
# vagrant.host: syntax error: invalid arithmetic operator (error token is ".host")
我不知道什么是导致错误,谷歌没有帮助。
用于演示'declare -n'方法的'++'! – Inian
Bash 4.3不是一个选项,最近我发现macOS会与bash 3.2一起出现,并且我转而使用扁平变量来支持它。 –
@IvanDokov这对你的真实项目没关系。从纯粹的问题的角度来看(例如在函数中采用assoc数组),这是一个可行的解决方案。 – jm666