Греповая ошибка из -за расширения переменных с пробелами
-
23-09-2019 - |
Вопрос
У меня есть файл с названием "physics 1b.sh
". В Bash, если я попробую
x="physics 1b"
grep "string" "$x".sh
Греп жалуется:
grep: physics 1b: No such file or directory.
Однако, когда я делаю
grep "string" physics\ 1b.sh
Это работает нормально. Поэтому я думаю, что проблема заключается в том, что переменная не расширяется, чтобы включить обратную черту, которую Греп должен распознать пространство. Как мне заставить это работать?
Используя Bash 3.2, Mac OS 10.6.
Редактировать:
Неважно, проблема заключалась в том, что X был настроен на " physics 1b"
, но когда я это сделал echo $x
Чтобы проверить содержимое, Bash срезал пространства спереди, чтобы я не мог сказать, что оно было иначе. Первый путь выше на самом деле работает.
Решение
Поместите весь аргумент в двойные цифры:
grep "string" "$x.sh"
Другие советы
Используйте это в своем сценарии.
grep "string" "${x}.sh"
другой путь
grep "string" "${x}.sh"
Не связан с StackOverflow