【发布时间】:2017-04-10 15:05:51
【问题描述】:
我正在 Chef 中编写一个食谱,其中我使用带有 bash 解释器的脚本资源来执行 sed 命令:
script 'find the lastest version of the major release available' do
interpreter "bash"
code <<-EOH
SUBMGR_REPO=$(ls -1d /net/gutstools.am.lilly.com/guts_dev/distr/redhat/* | egrep `echo as6-u7_64 | sed -r 's/([aw]s[[:digit:]]+).*$/\1-u[[:digit:]]+(_64)?$/'` 2>/dev/null | sort -nr -t/ -k 7.6,7 | awk -F/ '{ print $7 }' | head -1)
echo $SUBMGR_REPO
EOH
end
如果我从终端运行上述命令,它可以正常工作,如下所示:
[c244728_lx@brainiac-ia-0008 redhat]$ SUBMGR_REPO=$(ls -1d /net/gutstools.am.lilly.com/guts_dev/distr/redhat/* | egrep `echo as6-u7_64 | sed -r 's/([aw]s[[:digit:]]+).*$/\1-u[[:digit:]]+(_64)?$/'` 2>/dev/null | sort -nr -t/ -k 7.6,7 | awk -F/ '{ print $7 }' | head -1)
[c244728_lx@brainiac-ia-0008 redhat]$ echo $SUBMGR_REPO
as6-u8_64
[c244728_lx@brainiac-ia-0008 redhat]$ ls
as5-u10_64 as5-u8_64 as6-u4_64 as6-u5_64.tar as7-u1_64 ws5-u10 ws5-u6_64 ws5-u9 ws6-u2_64 ws6-u5 ws6-u7_64
as5-u11_64 as5-u9_64 as6-u5_64 as6-u6_64 as7-u2_64 ws5-u10_64 ws5-u7 ws5-u9_64 ws6-u3 ws6-u5_64 ws6-u8_64
as5-u5_64 as6-u1_64 as6-u5_64_1 as6-u7_64 krb5-patch ws5-u11 ws5-u7_64 ws6-u1 ws6-u3_64 ws6-u6 ws7-u1_64
as5-u6_64 as6-u2_64 as6-u5_64-GBIP as6-u7_64-GBIP openssl.tar ws5-u11_64 ws5-u8 ws6-u1_64 ws6-u4 ws6-u6_64 ws7-u2_64
as5-u7_64 as6-u3_64 as6-u5_64-kernel-patch as6-u8_64 ruby22_rail41_CHG0053697 ws5-u6 ws5-u8_64 ws6-u2 ws6-u4_64 ws6-u7
[c244728_lx@brainiac-ia-0008 redhat]$
但是在厨师食谱中失败,它在 $SUBMGR_REPO 中给出了空值。请帮我解决这个问题。
谢谢。
【问题讨论】:
-
顺便说一句:Why not parse
ls?
标签: ruby regex sed chef-infra chef-recipe