如何在通达命令中提到通配符

我正在通过Ansible执行shell命令。

有时我没有完整的文件夹名称。 假设我有dirname solr4.7.0

在shell中,我可以inputcd solr*

但是,我不能这样做:

chdir=/var/solr*

有没有解决办法?

    不可以。例如, command模块的chdir=参数不支持通配符。

    你可以使用寄存器变量来存储ls命令的输出结果:

     - shell: ls -d solr* register: dir_name - command: chdir=dir_name.stdout some_command 

    但坦率地说,这是一个丑陋的解决办法。 你最好使用实际的目录名称。 如果在不同的主机上有所不同,可以使用主机变量进行适当的设置。

    正如拉尔斯克写的关键是要使用register ,但代码不工作在我目前的完全版本。 所以这里纠正一个:

     - shell: ls -d solr* register: dir_name - command: chdir={{ item }} some_command with_items: dir_name.stdout_lines