Если инструмент или библиотека для разбора 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}'
Если строка пути заключена в двойные кавычки, переменная $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