我正在尝试将一个shell命令嵌入到我的Chef Recipe中,但是当Chef执行该命令时,似乎会出现一些问题。 这是相关的资源:
script "create libs symlink" do
interpreter "bash"
user "root"
cwd "/home/robin/test"
code <<-EOH
ln -s $(ls -1 | grep '^[0-9.-]\+$') curr-version-libs
EOH
end
/home/robin/test
目录包含一个名为19.26-3的文件夹,因此我期望有一个名为curr-version-libs
的符号链接指向19.26-3
。
然而,我最终得到了一个循环符号链接:
drwxr-xr-x 4 root root 4096 Jan 17 22:35 19.26-3
drwxr-xr-x 2 root root 4096 Jan 17 22:35 config
lrwxrwxrwx 1 root root 17 Jan 28 17:31 curr-version-libs -> curr-version-libs
看起来 $(ls -1 | grep '^[0-9.-]+$') 被删除了,最终我用了命令 ln -s curr-version-libs
。
有人知道发生了什么吗?我尝试使用 execute
资源,但是结果相同。
grep
没有匹配到任何内容,扩展名将被有效地删除。您确定该目录在那个时间存在,并且不是由另一个chef配方稍后创建的吗?您可以执行ls -l> ls_snapshot
,然后检查ls_snapshot
以查看当时有哪些文件。 - that other guy