В чем разница между одинарными и двойными кавычками в Bash Shell?
Заключение текста в кавычки является довольно стандартной практикой в командной строке, особенно при работе с файлами, в именах которых есть пробелы, но как узнать, использовать ли одинарные или двойные кавычки? Давайте посмотрим на разницу, и когда вы должны использовать один против другого.
Общее правило заключается в том, что двойные кавычки по-прежнему допускают расширение переменных внутри кавычек, а одинарные кавычки - нет. Продолжай читать.
Цитаты с простым текстом
Если вы просто заключаете несколько слов в текст, на самом деле не имеет значения, какое из них вы используете, поскольку они оба будут работать точно так же. Например, обе эти команды создадут каталог с именем Test Directory:
мкдир "Тестовый справочник"
mkdir 'Тестовый каталог'
Более опытные типы, вероятно, заметят, что вы также можете использовать mkdir Test \ Directory, если хотите.
Расширение оболочки
Разница между одинарными и двойными кавычками становится более важной, когда вы имеете дело с переменными в командной строке - по умолчанию bash собирается развернуть переменную, такую как $ test, в полную строку. Сначала мы назначим переменную:
test = "Это тест"
Теперь вы можете использовать эту переменную в командной строке следующим образом: Это тест на консоль:
echo $ test
Вот где разница между двойными и одинарными кавычками становится более очевидной - когда вы используете одинарные кавычки, переменные расширяться не будут. Например, если вы запустите эту команду:
echo '$ test'
При использовании одинарных кавычек вы увидите только «$ test» в командной строке, но при использовании двойных кавычек он будет отображаться правильно:
То же самое работает, когда вы используете символ «, чтобы развернуть команду в командной строке. Например, скажем, вы хотели использовать PWD команда из другой команды - вы должны использовать обратные кавычки, чтобы указать оболочке развернуть ее:
echo 'pwd' / test
Если бы вы были в вашей домашней папке, вы бы увидели вывод, который выглядел так:
/ Главная / выродок / тест
Например, вы находитесь в папке с пробелом в пути и хотите использовать команду ln для создания символической ссылки на файл в текущем каталоге. Обычно вам нужно указывать полный путь при использовании команды ln, поэтому гораздо проще использовать «pwd» для сохранения ввода.
Посмотрите, что происходит, когда вы пытаетесь использовать команду, не заключая в кавычки:
ln -s 'pwd' / test / home / geek / connectedname
Вместо этого вам нужно заключить в кавычки:
ln -s "pwd" / filename "/ some / other / path
Для более конкретного примера, давайте предположим, что у нас есть структура папок, как в этом примере, где все имена файлов имеют пробелы:
Поскольку команда unzip не поддерживает использование * для запуска всех файлов, вместо этого вам нужно использовать команду for. Вот где все становится интересным:
для f в * .zip; распаковать $ f; сделано
К сожалению! Похоже, это не сработало.
Вместо этого нам нужно использовать двойные кавычки вокруг переменной $ f, например:
для f в * .zip; распакуйте "$ f"; сделано
Теперь каждый раз, когда команда for проходит цикл, она на самом деле запускает такую команду:
распаковать "test 1.zip"
Конечно, он будет проходить и запускать аналогичную команду для каждого файла в каталоге.
Давайте рассмотрим
Теперь, когда мы рассмотрели примеры, мы просто быстро рассмотрим, если вы пропустили это:
Двойные кавычки
- Используется, когда вы хотите заключить переменные или использовать расширение оболочки внутри строки.
- Все символы внутри интерпретируются как обычные символы, кроме $ или ', которые будут расширены в оболочке.
Одинарные кавычки
- Все символы в одинарных кавычках интерпретируются как строковый символ.
На этом урок цитат заканчивается. Используйте их с умом.