В моей пьесе должна вернуться следующая строка 1
, а если вернется >1
, игра должна остановиться:
оболочка: ls -l /opt/tomcat/|grep "[ ]\+{{ newTomcatVer }}$"; эхо $?
Моя игра действительно потерпела неудачу с этой ошибкой:
"msg": "На сервере server01 более одного экземпляра /opt/tomcat/apache-tomcat-8.x.xx, воспроизведение заканчивается"
После повторного запуска в режиме отладки я вижу, что эта команда оболочки представлена в выводе отладки следующим образом:
"cmd": "ls -l /opt/tomcat/|grep \"[ ]\+apache-tomcat-8.5.69$\"; echo $?",
В приведенном выше примере двойные кавычки экранируются с помощью \
символ. Вопрос в том, какая команда на самом деле используется — та, что в плейбуке, или та, которую мы видим в выводе отладки?
Потому что, если я запускаю команду, которая находится в блокноте, то есть без escape-символов, вывод будет 1
как и ожидалось:
[tomcat@server01 ~]$ ls -l /opt/tomcat/|grep "[ ]\+apache-tomcat-8.5.69$"; эхо $?
1
Но если я выполню команду, которая находится в выводе отладки, я получаю следующее:
[tomcat@server01 ~]$ ls -l /opt/tomcat/|grep \"[ ]\+apache-tomcat-8.5.69$\"; эхо $?
grep: неверное регулярное выражение
2
Есть идеи, как это решить?