2014-06-30 120 views
2

我有一個名爲line變量,它擁有XML參數替換

[email protected]:~$ echo $line 
<Ticket State="inWork" /> 
[email protected]:~$ 

我想要得到的inWork文本行,所以基本上引號之間的字符串。想要使用$ {var#Pattern}$ {var%Pattern}syntax

第一部分按預期工作

[email protected]:~$ line=${line#*\"} 
[email protected]:~$ echo $line 
inWork" /> 
[email protected]:~$ 

但第二部分不剝離" />

[email protected]:~$ line=${line%*\"} 
[email protected]:~$ echo $line 
inWork" /> 
[email protected]:~$ 

任何線索,爲什麼不起作用?

回答

1

這是因爲模式*\"不匹配。你想在結束串的場景是什麼\"*

line='<Ticket State="inWork" />' 
echo ${line#*\"} 
echo ${line%\"*} 

不使用參數替代另一種可能:

cut -d'"' -f2 <<< $line 
+0

哦,是的,有匹配的時候看它_in reverse_從最後。感謝您的快速回答 – przno