Я пишу сценарий оболочки Bash для ежедневного резервного копирования нашей базы данных MySQL Request Tracker (RT). Вместо того, чтобы жестко кодировать пароль пользователя базы данных MySQL в сценарии оболочки, я хотел бы проанализировать его из файла RT_SiteConfig.pm RT. Соответствующая строка в RT_SiteConfig.pm выглядит так:
Set($DatabasePassword , 'db_pw_here');
Каким будет самый «чистый» способ извлечь только строку «db_pw_here», учитывая строку выше?
Самым «чистым» способом было бы написать код Perl для использования RT API для извлечения значения DatabasePassword
. У меня сейчас нет доступа к экземпляру RT, чтобы попробовать это, но это не должно быть очень сложно.
Вероятно, вы могли бы интегрировать однострочную программу Perl в свой сценарий bash, чтобы получить значение, например:
perl -MRT::Config -e 'print $RT::Config::DatabasePassword'
Обратите внимание, что эта командная строка полностью вымышленная. Прочтите документацию, чтобы найти фактический вызов.
Теперь менее чистым, но, вероятно, совершенно эффективным было бы использование sed
для извлечения информации:
sed -n "/Set(\$DatabasePassword/ s/.*'\([^']*\)'.*/\1/p"