Рейтинг:1

Ansible 2.9.21: в команду оболочки добавлен нежелательный escape-символ â\â

флаг cn

В моей пьесе должна вернуться следующая строка 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

Есть идеи, как это решить?

Рейтинг:2
флаг cz

Использовать не замужем цитаты в grep команда.

grep "[ ]\+{{ newTomcatVer }}$"

Когда вы используете двойные кавычки, оболочка попытается выполнить раскрытие переменной, то есть попытается понять смысл $". Это выходит как $\" потому что оболочка не распознает $" в качестве параметра он может расширяться, поэтому он пытается угадать, что вы хотели, и избегает кавычек.

Здесь нет реальной причины расширять параметры оболочки, поэтому вы можете поместить регулярное выражение в одинарные кавычки, чтобы решить проблему. Оболочка не будет пытаться расширять параметры и будет обрабатывать $ в прямом смысле.

grep '[ ]\+{{ newTomcatVer }}$'

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.