У меня есть 2 разные команды:Bash shell scripting. Переменная как аргумент. Нет цитатой против двойных кавычек
rm -rf $MY_DIR
rm -rf "$MY_DIR"
В чем разница между ними? Что я должен использовать?
У меня есть 2 разные команды:Bash shell scripting. Переменная как аргумент. Нет цитатой против двойных кавычек
rm -rf $MY_DIR
rm -rf "$MY_DIR"
В чем разница между ними? Что я должен использовать?
Переменные оболочки расширены дословно, поэтому вы должны использовать опцию quoted. Допустим, ваша переменная $ HOME была равна /Users/rocket spacer
. В этом случае будет разница между запуском rm -rf /Users/rocket spacer
и rm -rf "/Users/rocket spacer"
. Первый попытается удалить две вещи: /Users/rocket
и spacer
в текущем каталоге. Второй вариант сделает то, что вы хотите, и удалите каталог /Users/rocket spacer
. В общем случае при расширении переменной оболочки, представляющей путь, вы должны обернуть ее в кавычки, чтобы не беспокоиться о возможности чего-либо неправильно истолкованного.
Кроме того, я видел другую цитату, цитату, а не одну цитату. Как видно из этого ответа, http://unix.stackexchange.com/a/84980. Когда я его использую? – rocketspacer
Это называется backtick, и все внутри него будет оцениваться, а затем заменяется на вашу команду bash. Например, если вы хотите распечатать «Мое имя» и имя текущего пользователя, вы можете запустить echo «Я' whoami » –
К сожалению, в моем комментарии выше, обратные такты заставили« whoami »быть отформатированный как код, но я хотел бы запустить: echo «Я (backtick) whoami (backtick)» –