Bash 使用原始模块时返回重复参数的Ansible adhoc命令发现错误

Bash 使用原始模块时返回重复参数的Ansible adhoc命令发现错误,bash,ansible,ansible-ad-hoc,Bash,Ansible,Ansible Ad Hoc,我似乎已经在这里找不到这个问题的答案了,在谷歌上也找不到任何答案 我正在尝试使用ansible在远程框上运行一个临时命令,但我一直得到“在参数字符串中发现重复参数”失败,当我使用原始模块而不是shell模块时会发生这种情况 确切的错误消息如下所示: hostname1 | FAILED => a duplicate parameter was found in the argument string (variable) hostname2 | FAILED => a duplica

我似乎已经在这里找不到这个问题的答案了,在谷歌上也找不到任何答案

我正在尝试使用ansible在远程框上运行一个临时命令,但我一直得到“在参数字符串中发现重复参数”失败,当我使用原始模块而不是shell模块时会发生这种情况

确切的错误消息如下所示:

hostname1 | FAILED => a duplicate parameter was found in the argument string (variable)
hostname2 | FAILED => a duplicate parameter was found in the argument string (variable)
举例来说,这里有一个命令不起作用,它似乎反对将同一个变量设置两次,尽管这是有效的bash:

ansible group -i hosts-file -m raw -k -s -a "variable=1 ; echo \$variable; variable=2; echo \$variable"
我问这个问题的原因是因为我试图运行一个带有case语句的命令,在没有安装python的远程框上设置一个变量,并且不允许我以任何方式配置它们

举例来说:

ansible group -i hosts-file -m raw -k -s -a "
for file in \$(find . -name \"test*\") 
do
 case \$file in
  test1) variable=test1 ;;
  test2) variable=test2 ;;
  test3) variable=test3 ;;
 esac
 echo \$variable
done
"
这里的语法可能不太准确,但希望您能理解,它不能处理多次设置同一个变量的问题。我知道在上面的代码中,我可以通过将echo放在case语句中来绕过这个问题,但实际上我的代码比echo复杂得多,因此我通过将动作复制到case语句中,得到了更多的代码行

有人知道如何解决这个问题吗?非常感谢您的帮助,谢谢

编辑:我使用的是ansible 1.7版,根据下面的回答,这个问题不会影响2.0版以外的任何内容。

这是一个bug。因为一些愚蠢的原因。尝试以下方法:

ansible hosts -i hosts -m raw -a '/bin/bash -c "variable=1; echo \$variable; variable=2; echo \$variable;"' -vvv
此错误也仅出现在中,这是一个错误。因为一些愚蠢的原因。尝试以下方法:

ansible hosts -i hosts -m raw -a '/bin/bash -c "variable=1; echo \$variable; variable=2; echo \$variable;"' -vvv

此错误也仅存在于中。请提供您得到的确切错误消息,因为它在我的设置中运行良好。我太愚蠢了,我在上面添加了确切的错误消息。请提供您得到的确切错误消息,因为它在我的设置中运行良好。我太愚蠢了,我在上面添加了确切的错误消息。这是一种耻辱,原来我运行的是ansible的旧版本。不过,这项工作很不错,非常感谢这一点。很遗憾,我运行的是ansible的旧版本。不过,这项工作还是很不错的,非常感谢