2014-01-10 57 views
1

我試圖評估一個shell腳本中的grep表達式,並且該grep使用文字星號(*),但該星號似乎被我的bash擴展而不是保持字面星號:在shell腳本中以grep模式使用文字(*)

branch_description=$(git branch --list -vv | grep "^\*") 

我能做些什麼來運行在這一背景下grep,讓它接受其PATTERN參數文字星號?

回答

2

的問題是,慶典是解釋\和剝離出去了,因爲它是雙引號。改成

branch_description=$(git branch --list -vv | grep '^\*') 

會做你想做的。請參閱bash手冊中的QUOTING部分。

1

您可以使用單引號中的grep通過外殼以避免*擴展:

branch_description=$(git branch --list -vv | grep '^\*') 
3

一種解決方案是使用ASCII進制編碼:

branch_description=$(git branch --list -vv | grep "^\052") 

有用,外的箱子答案見

man 7 ascii 
+0

+1 – JellicleCat