我一直在这里浏览很多帖子,但是没有一个可以完全解决这个问题。
我有一个配置文件(即default.conf),其中包含多个值:
id: 2
type: food
name: potato
quantity: 34
我想要实现的是拥有一个bash脚本来读取配置文件,并将“:”(2,食品,马铃薯,34 ...)之后的每个单个值分配给多个变量,以供以后使用脚本。
答案 0 :(得分:1)
我建议为此使用关联数组。这要求bash 4或更高。
遍历文件,并使用bash中的字符串操作在关联数组中分配变量。
declare -A conf_vars; while read line; do conf_vars[${line%:*}]=${line#*:}; done <default.conf
您现在可以通过使用${conf_vars[type]}
来使用变量,在您的示例中,该变量可以提供食物。
编辑:
SO语法着色无法理解在这种情况下#不表示注释。只是忽略它。
答案 1 :(得分:0)
将read
与:
分隔符一起使用:
declare -A vars
while IFS=: read -r lvalue rvalue; do
vars[$lvalue]=${rvalue# }
done < data
${rvalue# }
删除了多余的空间。如果需要空格,请仅使用${rvalue}
。
输出:
declare -p vars
declare -A vars=([id]="2" [quantity]="34" [name]="potato" [type]="food" )