從功能裝載我作爲配置中使用:配置文件在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