Как bash может интерпретировать аргумент нулевой длины из расширенной строки? - PullRequest
0 голосов
/ 17 февраля 2012

В OSX запуск sed для редактирования на месте выполняется путем передачи аргумента нулевой длины, например:

find . -name "*.java" -print | xargs sed -f src/main/scripts/remove_snippets.sed -i ""

Однако помещение -i "" в переменную оболочки не работает:

dashi='-i ""'
find . -name *.java -print | xargs sed -f src/main/scripts/remove_snippets.sed $dashi

Вместо редактирования на месте "" интерпретируется как буквенная строка, используемая для расширения резервной копии, оставляя каталог файлов Java с именем *.java"".

Как bash можно интерпретировать "" как пустой аргумент, а не как аргумент, содержащий две двойные кавычки?

1 Ответ

3 голосов
/ 17 февраля 2012

Использовать массив.

dashi=(-i "")
find . -name *.java -print | xargs sed -f src/main/scripts/remove_snippets.sed "${dashi[@]}"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...