IT News: Digital Camera, OS, Laptop, Smartphone, Smart TV, Sound...

The Author's Project by Valeri N.Kravchuk
Сайт проверен Dr.Web
Меню сайта
  • Главная страница
  • Информация о сайте
  • Дневник
  • Каталог файлов
  • Обратная связь
  • Каталог сайтов
  • FAQ
  • Доска объявлений
  • Форум
  • Фотоальбом
  • Категории раздела
    Автомобильные гаджеты, ремонт... [220]
    Безопасность IT [484]
    Блоки питания, Power Banks, зарядки... [490]
    Видеорегистраторы [220]
    Гаджеты для спорта и здоровья... [190]
    Гаджеты, аксессуары... [625]
    Измерительная техника, инструменты [449]
    Накопители данных [226]
    Нетбуки, Ноутбуки, Ультрабуки [679]
    Мультиварки, блендеры и не только... [158]
    Планшеты [758]
    Радар-детекторы [26]
    Роботы-пылесосы [37]
    Своими руками [356]
    Сети, сетевые технологии, оборудование... [269]
    Смартфоны [4966]
    Фотокамеры, объективы, искусство фотографии.. [543]
    Умный дом [47]
    Электронные книги [96]
    CB, LPD, PMR- связь... [169]
    DECT, IP-телефоны [18]
    Drones, boats, cars... [108]
    electric cars [35]
    GPS-навигаторы, трекеры... [51]
    Linux и не только [4380]
    mini computers и не только... [409]
    News IT, Это интересно, ликбез... [1113]
    Smart TV, UltraHD, приставки, проекторы... [414]
    Smart Watch [263]
    Sound: наушники, плееры, усилители... [616]
    Windows 10... [298]
    Windows 11 [28]
    Погода

  • Метеорадар БРЕСТ
  • Погода в Бресте от www.yr.no

    Яндекс.Погода БРЕСТ

  • Интересные ссылки

    COMPIZOMANIA

    Наш опрос
    Оцените мой сайт
    Всего ответов: 1339
    Статистика
    Анализ веб сайтов

    Яндекс.Метрика

    Рейтинг@Mail.ru Яндекс цитирования

    Russian America Top. Рейтинг ресурсов Русской Америки.

    eXTReMe Tracker

    Правильный CSS!


    Онлайн всего: 1
    Гостей: 1
    Пользователей: 0
    Locations of visitors to this page
    Форма входа
    Главная » 2017 » Январь » 11 » В чем разница между одинарными и двойными кавычками в сценариях командной оболочки Bash?
    20:38
    В чем разница между одинарными и двойными кавычками в сценариях командной оболочки Bash?

    В чем разница между одинарными и двойными кавычками в сценариях командной оболочки Bash?

    Оригинал: What's the Difference Between Single and Double Quotes in the Bash Shell?
    Автор: Lowell Heddings
    Дата публикации: 14 сентября 2014 г.
    Перевод: А.Панин
    Дата перевода: 10 ноября 2016 г.

    В чем разница между одинарными и двойными кавычками в сценариях командной оболочки Bash?

    Размещение текста в кавычках является обычной практикой при работе с интерфейсом командной строки системы, особенно при необходимости обработки файлов с символами пробелов в именах, но знаете ли вы, когда следует использовать одинарные кавычки, а когда двойные? Давайте рассмотрим различия между данными типами кавычек, а также примеры их использования.

    Основное правило заключается в том, что двойные кавычки позволяют осуществлять раскрытие переменных, в то время, как одинарные кавычки не позволяют этого. Если вам нужны подробности, продолжайте чтение.

    Кавычки и обычный текст

    Если вы просто помещаете несколько слов в кавычки, тип этих кавычек не имеет никакого значения, так как в данном случае кавычки обоих типов будут работать одинаково. Например, две приведенных ниже команды будут создавать директорию с именем "Test Directory":

    mkdir "Test Directory"
    mkdir 'Test Directory'
    

    Опытные пользователи наверняка отметят, что при желании вы также можете использовать команду mkdir Test\ Directory.

    Раскрытие переменных командной оболочки

    Различие между одинарными и двойными кавычками становится более важным при работе с переменными в командной строке - по умолчанию Bash будет осуществлять раскрытие переменных, таких, как $test, заключающееся в преобразовании их значений в строковый формат и их подстановке в результирующие строки. В первую очередь присвоим значение переменной:

    test="This is a test"
    

    Теперь вы можете использовать переменную в командной строке аналогичным образом, в результате чего будет выводиться строка "This is a text":

    echo $test
    

    В данном случае различие между двойными и одинарными кавычками становится более очевидным - при использовании одинарных кавычек с переменными последние не будут раскрываться. Например, в случае исполнения следующей команды:

    echo '$test'
    

    в увидите ничто иное, как строку "$test", но после замены одинарных кавычек на двойные раскрытие переменной снова будет корректно осуществляться:

    После замены одинарных кавычек на двойные раскрытие переменной снова будет корректно осуществляться

    Это же утверждение справедливо и в случае использования символа ` для раскрытия команд в командной строке. Например, если вам нужно использовать вывод команды pwd в рамках другой команды, вы можете использовать обратные кавычки для ее раскрытия:

    echo `pwd`/test
    

    Если вашей рабочей директорией будет являться ваша домашняя директория, вы увидите аналогичный вывод:

    /home/geek/test
    

    Представим, к примеру, что вы перешли в директорию, в пути к которой присутствует символ пробела и хотите использовать команду ln для создания символьной ссылки на файл из этой директории. Обычно в подобных случаях в качестве первого аргумента команды ln приходится указывать полный путь к файлу, поэтому будет гораздо проще воспользоваться конструкцией `pwd`, в том числе, для сокращения количества вводимых символов.

    Посмотрите, что случится при попытке использования данной команды без помещения первого аргумента в кавычки:

    ln -s `pwd`/test /home/geek/linkedname
    

    Результат использования команды без помещения первого аргумента в кавычки

    Вместо этого вы можете поместить первый аргумент в кавычки:

    ln -s "`pwd`/filename" /some/other/path
    

    Давайте конкретизируем пример, предположив, что в нашем распоряжении имеется описанная структура директорий, причем в именах файлов присутствуют символы пробелов:

    Результат использования команды по отношению к файлам с символами пробелов в именах

    Так как команда unzip не позволяет использовать шаблон *, соответствующий всем файлам из директории, вам придется использовать цикл for вместо него. С этого момента все становится гораздо интереснее:

    for f in *.zip;do unzip $f;done
    

    Упс! Кажется, этот прем не сработал.

    Некорректный вариант команды

    Вместо этого мы можем поместить переменную $f в двойные кавычки следующим образом:

    for f in *.zip;do unzip "$f";done
    

    Теперь при каждой итерации цикла будет выполняться аналогичная команда:

    unzip "test 1.zip"
    

    Разумеется, таким образом будет обрабатываться каждый из файлов с расширением .zip из текущей директории.

    Давайте подведем итоги

    Теперь, когда мы рассмотрели примеры, мы можем подвести итоги, чтобы окончательно прояснить ситуацию:

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

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

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

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

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

     

    http://rus-linux.net/MyLDP/consol/single-and-double-quotes-in-the-bash.html

    Категория: Linux и не только | Просмотров: 557 | Добавил: laptop | Рейтинг: 0.0/0
    Всего комментариев: 0
    Добавлять комментарии могут только зарегистрированные пользователи.
    [ Регистрация | Вход ]
    Волк слабее льва и тигра, но в цирке волк не выступает!
    Волк слабее льва и тигра, но в цирке волк не выступает!
    Волк - единственный из зверей, который может пойти в бой на более сильного противника.
    Если же он проиграл бой, то до последнего вздоха смотрит в глаза противника. После этого умирает...

    Праздники сегодня

    Поиск
    Календарь
    «  Январь 2017  »
    ПнВтСрЧтПтСбВс
          1
    2345678
    9101112131415
    16171819202122
    23242526272829
    3031
    Архив записей
    Друзья сайта
  • Официальный блог
  • JEEP - the best! Mercedes - the best! Автомобильный портал города Бреста: технические характеристики с фото, авторынок, автоспорт...
    Наша кнопка
    IT новости с моего лаптопа...

    Внимание!
    Администратор сайта laptop.ucoz.ru не несет ответственности за содержание рекламных объявлений. Все используемые на сайте зарегистрированные товарные знаки принадлежат своим законным владельцам! Используемая со сторонних источников информация публикуется с обязательными ссылками на эти источники.
    Copyright Valeri N.Kravchuk © 2007-2024