最近,我试图将设备详细信息作为参数,然后为其链接一个星号,以便运行shell命令 . 例如,如果设备是 /etc/sda
,则shell命令将为 ls -l /dev/sda*
.
- name: Get Hitachi Devices device details
shell: lsscsi | grep HITACHI | awk '{print $6}'
register: hitachiDevice
- name: Check if the volume is partitioned
shell: ls -l "{{ hitachiDevice.rc }}"* | wc -l
failed_when: hitachiDevice.rc != 1
这是运行脚本后得到的错误:
{
"changed": true,
"cmd": "ls -l \"0\"* | wc -l",
"delta": "0:00:00.027338",
"end": "2016-08-10 14:15:12.200415",
"failed": true,
"failed_when_result": true,
"rc": 0,
"start": "2016-08-10 14:15:12.173077",
"stderr": "ls: cannot access 0*: No such file or directory",
"stdout": "0",
"stdout_lines": [
"0"
],
"warnings": []
}
任何人都知道这是什么问题,我该如何解决?
1 回答
hitachiDevice.rc
包含上一个命令的结果代码 .我敢打赌,如果
grep
成功,它总是0
.所以你的下一个命令几乎总是
ls -l 0* | wc -l
,它会给你错误我认为你需要类似
hitachiDevice.stdout
的东西,这取决于你想要达到的目标 .