我有一个名为line
的变量,它包含XML中的一行
user@ubuntu:~$ echo $line
<Ticket State="inWork" />
user@ubuntu:~$
我想获取inWork
文本,所以基本上是引号之间的字符串。想要使用 $ {var#Pattern} 和 $ {var%Pattern} syntax来实现这一目标。
第一部分按预期工作
user@ubuntu:~$ line=${line#*\"}
user@ubuntu:~$ echo $line
inWork" />
user@ubuntu:~$
但第二部分并没有剥离" />
user@ubuntu:~$ line=${line%*\"}
user@ubuntu:~$ echo $line
inWork" />
user@ubuntu:~$
任何线索为什么不起作用?
答案 0 :(得分:1)
这是因为模式*\"
并不匹配。您希望在字符串结尾方案中\"*
:
line='<Ticket State="inWork" />'
echo ${line#*\"}
echo ${line%\"*}
不使用参数替换的可能替代方案:
cut -d'"' -f2 <<< $line