Ошибка Grep из-за расширения переменных с пробелами - PullRequest
4 голосов
/ 30 марта 2010

У меня есть файл с именем "physics 1b.sh". В bash, если я попытаюсь

x="physics 1b"
grep "string" "$x".sh

grep жалуется:

grep:  physics 1b: No such file or directory.

Однако, когда я делаю

grep "string" physics\ 1b.sh 

Работает нормально. Так что я думаю, проблема в том, что переменная не раскрывается, чтобы включить обратную косую черту, необходимую grep для распознавания пространства. Как мне заставить это работать?

Использование bash 3.2, mac os 10.6.

Edit:
Не берите в голову, проблема была в том, что x был установлен на " physics 1b", но когда я сделал echo $x, чтобы проверить содержимое, bash отрубил пробелы спереди, поэтому я не мог сказать, что это было по-другому. Первый способ выше на самом деле работает.

Ответы [ 3 ]

8 голосов
/ 30 марта 2010

Поместите весь аргумент в двойные кавычки:

grep "string" "$x.sh"
2 голосов
/ 30 марта 2010

используйте это в своем скрипте.

grep "string" "${x}.sh"
0 голосов
/ 30 марта 2010

другой способ

grep "string" "${x}.sh"
...