【发布时间】:2015-12-08 08:11:26
【问题描述】:
我需要验证一大堆 YAML 文件。
我尝试了 yaml 在线解析器 (http://yaml-online-parser.appspot.com/),它运行良好,但是将每个 YAML 文件内容复制到框中并解析它们的手动工作量太大。
有没有办法批量解析/验证 YAML 文件?
【问题讨论】:
我需要验证一大堆 YAML 文件。
我尝试了 yaml 在线解析器 (http://yaml-online-parser.appspot.com/),它运行良好,但是将每个 YAML 文件内容复制到框中并解析它们的手动工作量太大。
有没有办法批量解析/验证 YAML 文件?
【问题讨论】:
这在任何具有 YAML 库的脚本语言中都相当简单。例如,您可以在 Ruby 中执行以下操作:
#!/usr/bin/env ruby
require "yaml"
def check_file(filename)
YAML.parse_file(filename)
puts "OK"
0
rescue Psych::SyntaxError => ex
puts "Error#{ex.message[/: .+/]}"
1
end
exit_code = 0
max_filename_length = ARGV.max_by(&:size).size
ARGV.each do |filename|
printf "%-*s ", max_filename_length, filename
exit_code |= check_file(filename)
end
exit exit_code
用法:
$ ruby check_yaml.rb *.yml
config-1.yml OK
config-2.yml OK
invalid.yml Error: did not find expected key while parsing a block mapping at line 2 column 3
xyzzy.yml OK
$ echo $EXIT_CODE
1
【讨论】:
ruby check_yaml.rb *.yml。检查所有这些。对吗?
ruby check_yaml.rb path/to/file.yml path/to/another/file.yml
check_yaml.rb 与您所在的目录不同,则必须提供相对或绝对路径。
foo/**/*.yml。这里有更多信息:stackoverflow.com/questions/3529997/… 如果你有太多的文件要在一个命令行中使用,你可以使用find 和-exec 选项或xargs。 2. 是的,只有一个 YAML 标准,所以你不应该对多种风格有任何问题。官方规范有不同的版本,尽管差异很小;大多数工具支持 1.1;有些不支持1.2。您可以通过yaml.org了解更多信息。
【讨论】: