好的,给出关于YAML数据的澄清,我们可以解析它。YAML是一组包含XML、JSON和CSV的数据格式,您确实需要使用适当的解析器。我将使用Ruby(附带YAML库)读取文件并输出bash代码。shell将获取该输出以创建shell数组。
$ source <(
ruby -e '
require "yaml"
result = Hash.new {|h,k| h[k] = Array.new}
data = YAML.load_file(ARGV.shift)
data["services"].each do |obj|
obj.keys.each {|k| result[k] << obj[k]}
end
result.each_pair do |k,v|
printf "%ss=(%s)\n", k, v.map {|e| "\"#{e}\""}.join(" ")
end
' file.yaml
)
$ declare -p apps ports services
declare -a apps=([0]="mysql" [1]="mongo_instance" [2]="restful_api")
declare -a ports=([0]="" [1]="" [2]="5000")
declare -a services=([0]="mysql" [1]="mongo" [2]="api")