Домашняя » как » В чем разница между одинарными и двойными кавычками в Bash Shell?

    В чем разница между одинарными и двойными кавычками в 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"

    Конечно, он будет проходить и запускать аналогичную команду для каждого файла в каталоге.

    Давайте рассмотрим

    Теперь, когда мы рассмотрели примеры, мы просто быстро рассмотрим, если вы пропустили это:

    Двойные кавычки

    • Используется, когда вы хотите заключить переменные или использовать расширение оболочки внутри строки.
    • Все символы внутри интерпретируются как обычные символы, кроме $ или ', которые будут расширены в оболочке.

    Одинарные кавычки

    • Все символы в одинарных кавычках интерпретируются как строковый символ.

    На этом урок цитат заканчивается. Используйте их с умом.