#bash
#bash
Вопрос:
У меня есть вызываемая переменная line
, которая содержит строку из XML
user@ubuntu:~$ echo $line
<Ticket State="inWork" />
user@ubuntu:~$
Я хочу получить inWork
текст, то есть в основном строку между кавычками. Хотите выполнить это, используя синтаксис $ {var#Pattern} и $ {var%Pattern} .
Первая часть работает так, как ожидалось
user@ubuntu:~$ line=${line#*"}
user@ubuntu:~$ echo $line
inWork" />
user@ubuntu:~$
Но вторая часть не удаляет " />
user@ubuntu:~$ line=${line%*"}
user@ubuntu:~$ echo $line
inWork" />
user@ubuntu:~$
Есть какие-либо подсказки, почему это не работает?
Ответ №1:
Это потому, что шаблон *"
не совпадает. Что вы хотите в сценарии конца строки, так это "*
:
line='<Ticket State="inWork" />'
echo ${line#*"}
echo ${line%"*}
Возможная альтернатива, которая не использует подстановку параметров:
cut -d'"' -f2 <<< $line
Комментарии:
1. О да, нужно смотреть на это в обратном порядке при сопоставлении с конца. спасибо за быстрый ответ