В этом случае строка в $param
будет интерпретироваться как регулярное выражение. Это выражение содержит $
, который привязывает параметр ambari_parameter
в шаблоне к концу совпадения. Поскольку ambari_parameter$
во входных данных не содержит ambari_parameter
в самом конце (из-за $
в конце строки), он не будет совпадение.
Вы можете просто экранировать $
как \$
в шаблоне ( \\$
в строке с двойными кавычками) или поместить $
в группе, заключенной в квадратные скобки, как [$]
, но, поскольку вы, кажется, хотите выполнить совпадение строки, а не соответствие регулярному выражению, может быть более подходящим использовать -F
:
echo 'ambari_parameter$' | grep -F -e "$param"
Использование grep -F
заставляет grep
обрабатывать данный шаблон как строку, а не как регулярное выражение. Таким образом, каждый символ в шаблоне будет совпадать буквально, даже $
в конце.
Я также использовал здесь -e
, чтобы заставить grep
распознавать следующий аргумент как шаблон. Это необходимо, если $param
начинается с тире ( -
). Обычно хорошо использовать -e
всякий раз, когда шаблон, с которым вы сопоставляетесь, задан в переменной.
Чтобы еще больше потребовать, чтобы целая строка ввода соответствовала полной строке, добавьте -x
:
echo 'ambari_parameter$' | grep -xF -e "$param"
Если $param
равно ambari_parameter$
, то это не будет соответствовать строке _ambari_parameter$
или ambari_parameter$100
(но будет соответствовать , если -x
не указано ).
Я ненавижу удалять старые посты, но это единственное подходящее место для публикации этой информации. В CentOS 7 установка MariaDB 10 по умолчанию (с использованием стандартных rpm CentOS )имеет неправильное расположение файлов часовых поясов. У нас были проблемы с приложениями, которые зависят от MySQL для получения информации о часовом поясе. Независимо от того, какие настройки мы использовали в приложениях, они всегда возвращали время часового пояса UTC.
Это:
mysql_tzinfo_to_sql /usr/share/zoneinfo/right |mysql -u root mysql -p
Немедленно исправил проблему. Нет необходимости в перезагрузке! Я очистил кеш и т. д. для хорошей меры...