Сценарий bash - как использовать переменную $ в grep

Вы неправильно разместили символ равенства в my-portal.service. Кроме того, вы должны избавиться от сценария оболочки и заставить SystemD напрямую управлять процессом.

Попробуйте это:

[Unit]
Description=My Portal Service
After=network.target

[Service]
Type=Simple
ExecStart=/usr/bin/java -jar /opt/apps/egp/stage/my-portal/target/my-portal.jar server /opt/apps/egp/stage/my-portal/target/my-portal.yml

[Install]
WantedBy=multi-user.target
0
30.03.2020, 20:44
1 ответ

Переменные не раскрываются в одинарных кавычках. В этом случае, вероятно, будет достаточно просто переключиться на двойные кавычки. Также удалите [и ]вокруг $domain. С помощью квадратных скобок вы создадите выражение в квадратных скобках, которое будет соответствовать любому одиночному символу в имени домена (, но не самому фактическому имени домена ).

В итоге у вас получится что-то вроде

whois "$domain" |
grep -m1 -Eio "\b[[:alnum:]._%+-]+@$domain\b"

Я удалил бит \.[A-Z]{2,4}в конце вашего выражения, потому что на самом деле не видел в нем никакого смысла, и я использовал символическое имя для сопоставления буквенно-цифровых символов перед знаком @.

Дополнительным улучшением будет замена любой точки в $domainна \.перед ее использованием в шаблоне:

whois "$domain" |
grep -m1 -Eio "\b[[:alnum:]._%+-]+@${domain//./\\.}\b"

Для этого требуется bashили любая другая оболочка, которая понимает нестандартную -подстановку параметров ${variable//pattern/word}.

3
19.03.2021, 02:31

Теги

Похожие вопросы