从文件中读取字符串,并使用bash将它们存储在多个变量中

时间:2018-07-12 10:51:05

标签: linux bash unix sh

我一直在这里浏览很多帖子,但是没有一个可以完全解决这个问题。

我有一个配置文件(即default.conf),其中包含多个值:

id: 2
type: food
name: potato
quantity: 34

我想要实现的是拥有一个bash脚本来读取配置文件,并将“:”(2,食品,马铃薯,34 ...)之后的每个单个值分配给多个变量,以供以后使用脚本。

2 个答案:

答案 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" )