Ruby 如何将路径与前五个字符匹配
我必须到达位置Ruby 如何将路径与前五个字符匹配,ruby,chef-infra,Ruby,Chef Infra,我必须到达位置/var/log/acpchef/commv123,在那里123可以更改为456 我累了Dir.glob。我需要/var/log/acpchef/commv***。我将在mixlibshellout中执行 begin cwd_kernel = Dir.glob('/var/cache/acpchef/commv***') cmd = Mixlib::ShellOut.new("commandrun", :cwd => cwd_kernel) cmd.run_com
/var/log/acpchef/commv123
,在那里123
可以更改为456
我累了Dir.glob
。我需要/var/log/acpchef/commv***
。我将在mixlibshellout
中执行
begin
cwd_kernel = Dir.glob('/var/cache/acpchef/commv***')
cmd = Mixlib::ShellOut.new("commandrun", :cwd => cwd_kernel)
cmd.run_command
log 'run'
end
这将使FileName与前五个字符及其后的任何字符相匹配:
Dir.glob('/var/cache/acpchef/commv*')
# will match /var/cache/acpchef/commv12345abcdxyz123456
这将使用任意三个额外字符匹配文件名:
Dir.glob('/var/cache/acpchef/commv???')
# will match /var/cache/acpchef/{commv123, commv456, commvabc, ...}
这将用三个数字匹配文件名:
Dir.glob('/var/cache/acpchef/commv[0-9][0-9][0-9]')
# will match /var/cache/acpchef/commv{123, 234, 456, 999, ...}
此外,您的示例没有正确使用块语法,并且没有使用rescue
,而是使用了begin..end
,这基本上不起任何作用。它应成为:
Dir.glob('/var/cache/acpchef/commv???').each do |cwd_kernel|
cmd = Mixlib::ShellOut.new("commandrun", :cwd => cwd_kernel)
cmd.run_command
log 'run'
end
Dir.glob
返回一个,它是结果的集合<代码>数组。每个都返回一个,它基本上是一个对象,使用新值运行以下代码块的次数与可用新值的次数相同,这意味着您可以使用它为Dir.glob
的所有结果运行相同的代码块。该值通过|block|u参数
语法传递给块
ruby中的关键字用于捕获错误:
begin
# do something that generates an exception
rescue => exception
# handle the exception
end
A开始
而不进行救援
,确保
或否则
不执行任何操作
此外,这与。非常相似,这将使FileName与前五个字符及其后的任何字符相匹配:
Dir.glob('/var/cache/acpchef/commv*')
# will match /var/cache/acpchef/commv12345abcdxyz123456
这将使用任意三个额外字符匹配文件名:
Dir.glob('/var/cache/acpchef/commv???')
# will match /var/cache/acpchef/{commv123, commv456, commvabc, ...}
这将用三个数字匹配文件名:
Dir.glob('/var/cache/acpchef/commv[0-9][0-9][0-9]')
# will match /var/cache/acpchef/commv{123, 234, 456, 999, ...}
此外,您的示例没有正确使用块语法,并且没有使用rescue
,而是使用了begin..end
,这基本上不起任何作用。它应成为:
Dir.glob('/var/cache/acpchef/commv???').each do |cwd_kernel|
cmd = Mixlib::ShellOut.new("commandrun", :cwd => cwd_kernel)
cmd.run_command
log 'run'
end
Dir.glob
返回一个,它是结果的集合<代码>数组。每个都返回一个,它基本上是一个对象,使用新值运行以下代码块的次数与可用新值的次数相同,这意味着您可以使用它为Dir.glob
的所有结果运行相同的代码块。该值通过|block|u参数
语法传递给块
ruby中的关键字用于捕获错误:
begin
# do something that generates an exception
rescue => exception
# handle the exception
end
A开始
而不进行救援
,确保
或否则
不执行任何操作
此外,这与.var/cache/acpchef/commv*.
Dir['/var/cache/acpchef/commv*.]
(只有一个通配符)非常相似。您能举个例子吗。我对ruby和chefWelcome还不熟悉,来看看Stackexchange Janani!你能编辑你的问题使其更具可读性吗?Dir['/var/cache/acpchef/commv*']
(只有一个通配符)应该可以。你能举个例子吗。我是ruby和chefWelcome的新手,来看看Stackexchange Janani!你能修改一下你的问题,让它更具可读性吗?