2014-01-10 3 views
1

Я пытаюсь оценить выражение grep внутри скрипта оболочки, а grep использует буквенную звездочку (*), но эта звездочка, по-видимому, расширяется моим bash вместо того, чтобы оставаться в буквальном смысле звездочку:Использовать литерал (*) в шаблоне grep в скрипте оболочки

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

Что я могу сделать, чтобы запустить grep в этом контексте, и пусть он получит буквального звездочку в его PATTERN аргумент?

ответ

2

Проблема заключается в том, что Баш интерпретирует \ и обнажая его прочь, потому что в двойных кавычках. Изменение на

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

будет делать то, что вы хотите. См. Раздел «QUOTING» в руководстве bash.

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

Смежные вопросы