CentOS 7 PATH перезаписан /etc/bashrc

Если инструмент или библиотека для разбора json не установлены, и вы не можете их установить или не можете использовать какие-либо переносные, если вы можете сделать некоторые предположения относительно формата файла json (, например, он всегда один пробел по обе стороны от :, нет экранированного символа, нет {, }в строковых значениях, нет вложенных {...}... ), как кажется, это было бы возможно из вашего образца:

/opt/keycloak/bin/kcadm.sh get groups -r My_Realm |
  perl -l -0777 -ne 'for (/\{.*?\}/sg) {
    print $1 if /"name" : "Admin_UserGroup"/ && /"id" : "(.*?)"/}'

Более пуленепробиваемая версия -:

perl -l -0777 -ne 'while(m(([^{}"]++|"(?:\\.|[^\\"])*+"|
  \{(?:"name"\s*:\s*("Admin_UserGroup")|"id"\s*:\s*"((?:\\.|[^\\"])*+)"|
  (?1))*\}))gxs) {print $3 if $2}'
0
25.07.2020, 08:57
1 ответ

Если строка пути заключена в двойные кавычки, переменная $PATHрасширяется оболочкой, а затем echoдобавляется к /etc/bashrc. Это означает, что PATHустанавливается равным фактическому значению $PATHпри запуске сценария установки плюс /opt/dell/srvadmin/sbin, а не буквальному значению $PATH:/opt/dell/srvadmin/sbin.

Я не знаю, так задумано или это ошибка. Вы можете заменить строку на

PATH=$PATH:/opt/dell/srvadmin/sbin

в /etc/bashrcили замените двойные кавычки в скрипте на одинарные, чтобы $PATHне расширялся:

echo 'PATH=$PATH:/opt/dell/srvadmin/sbin' >> /etc/bashrc
3
18.03.2021, 23:17

Теги

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