
透過 powershell 執行 ansible 模組時,shell 指令不會擴充通配符。
如果我刪除通配符並指定版本號,它將運行“rabbitmq_server-3.9.3”。
關於如何使用通配符進行此操作有什麼建議嗎?
yaml代碼:
- name: Check if RabbitMQ is already installed
shell: "\"/cygdrive/c/Program\ Files/RabbitMQ\ Server/rabbitmq_server-*/sbin/rabbitmq-service.bat\" status"
ignore_errors: true
register: RabbitMQ_install_status
錯誤:
'C:\cygwin\bin\bash.exe -c ansible-playbook test.yml':
TASK [Check if RabbitMQ is already installed] **************************************************************************fatal: [localhost]: FAILED! => {"changed": true, "cmd": "\"/cygdrive/c/Program Files/RabbitMQ Server/rabbitmq_server-*/sbin/rabbitmq-service.bat\" status", "delta": "0:00:00.042184", "end": "2021-08-16 13:43:52.066236", "msg": "non-zero return code", "rc": 127, "start": "2021-08-16 13:43:52.024052", "stderr": "/bin/sh: /cygdrive/c/Program Files/RabbitMQ Server/rabbitmq_server-*/sbin/rabbitmq-service.bat: No such file or directory", "stderr_lines": ["/bin/sh: /cygdrive/c/Program Files/RabbitMQ Server/rabbitmq_server-*/sbin/rabbitmq-service.bat: No such file or directory"], "stdout": "", "stdout_lines": []}
...ignoring
答案1
shell 不會擴展通配符,因為您已將其放在引號中。通配符擴充不在單引號或雙引號完成。
\"/cygdrive/c/Program\ Files/RabbitMQ\ Server/rabbitmq_server-*/sbin/rabbitmq-service.bat\"
想必您這樣做是為了避開路徑中的空格。
嘗試僅引用路徑中需要引用的部分。
\"/cygdrive/c/Program\ Files/RabbitMQ\ Server\"/rabbitmq_server-*/sbin/rabbitmq-service.bat
## ##
答案2
你需要.*
“/cygdrive/c/Program\ Files/RabbitMQ\ Server/rabbitmq_server-.*/sbin/rabbitmq-service.bat”