因此,我需要在我的剧本中使用调试信息的一部分,就像
---
- name: extract
shell: grep "ScriptAlias /.*/" /etc/httpd/conf/httpd.conf
register: st
- debug:
msg: "{{ st.stdout_lines | map('trim') | list }}"
并且该手册会在运行时打印出来
ok: [52.61.71.178] => {
"msg": [
"ScriptAlias /cgi-bin/ \"/var/www/cgi-bin/\""
]
}
所以我需要做的是将味精"ScriptAlias /cgi-bin/ \"/var/www/cgi-bin/\""
放入数组中,并提取其中的最后一个元素"/var/www/cgi-bin/"
将味精中的最后一个元素提取到只能得到"/var/www/cgi-bin/"
的位置的最佳方法是什么?
答案 0 :(得分:1)
尝试如下操作。仅添加了regex_replace(来自Valdimir的答案)来获得您想要的东西。
- hosts: localhost
vars:
lines:
- "ScriptAlias /cgi-bin/ \"/var/www/cgi-bin/\""
tasks:
- debug:
msg: "{{ item.split(' ')[2] | regex_replace('\"', '') }}"
loop: "{{ lines }}"
输出应与::完全相同
"msg": "/var/www/cgi-bin/"
答案 1 :(得分:0)
split方法可以正常工作。输出被删节。
> ansible-playbook split_test.yml
"msg": "\"/var/www/cgi-bin/\""
split_test.yml
- hosts: localhost
vars:
lines:
- "ScriptAlias /cgi-bin/ \"/var/www/cgi-bin/\""
tasks:
- debug:
msg: "{{ item.split(' ')[2] }}"
loop: "{{ lines }}"