Начална » как да » Каква е разликата между единични и двойни цитати в Bash Shell?

    Каква е разликата между единични и двойни цитати в Bash Shell?

    Ограждащият текст в кавички е доста стандартна практика в командния ред, особено когато става въпрос за файлове, които имат интервали в имената, но как да знаете дали да използвате единични или двойни кавички? Нека да разгледаме разликата и кога трябва да използвате една срещу друга.

    Общото правило е, че двойните кавички все още позволяват разширяване на променливи в кавичките, а единичните кавички не. Продължавай да четеш.

    Цитати с прост текст

    Ако просто затваряте няколко думи от текста, наистина няма значение кой ще използвате, тъй като и двата ще работят точно по същия начин. Тези две команди например ще създадат директория, наречена Test Directory:

    mkdir "Тестова директория"
    mkdir „Тестова директория“

    По-опитните типове вероятно ще отбележат, че можете да използвате и тестовата директория на mkdir, ако искате.

    Shell променлива експанзия

    Разликата между единични и двойни кавички става по-важна, когато се занимавате с променливи в командния ред по подразбиране, bash ще разшири променлива като $ test в пълния низ. Първо ще присвоим променливата:

    test = "Това е тест"

    Сега можете да използвате тази променлива в командния ред, като този, който просто трябва да изведе Това е тест към конзолата:

    echo $ test

    Ето къде разликата между двойните и единичните кавички става по-ясна - когато използвате единични кавички, променливите няма да се разширяват. Например, ако изпълните тази команда:

    echo '$ test'

    В командния ред няма да видите нищо друго освен "$ test", когато използвате единични кавички, но ще се извежда правилно, когато използвате двойни кавички:

    Същото се случва, когато използвате символа, за да разширите командата в командния ред. Например, кажете, че искате да използвате хората с увреждания командата от друга команда - бихте използвали backticks, за да укажете на черупката да го разшири:

    echo 'pwd' / тест

    Ако сте били в началната си папка, ще видите изход, който изглеждаше по следния начин:

    / Начало / маниак / тест

    Кажете например, че се намирате в папка, която има интервал в пътя и искате да използвате командата ln, за да създадете символична връзка към файл в текущата директория. Обикновено трябва да посочите пълния път, когато използвате командата ln, така че е много по-лесно да използвате „pwd“, за да запазите въвеждането.

    Вижте какво се случва, когато опитате да използвате командата, без да я заграждате в кавички:

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

    Вместо това трябва да заобиколите в кавички:

    ln -s "'pwd' / filename" / някой / друг / път

    За по-конкретен пример нека предположим, че имаме структура на папките като този пример, където всички имена на файлове имат интервали в тях:

    Тъй като командата unzip не поддържа използването на * за да я стартира срещу всички файлове, вместо това ще трябва да използвате командата for. Ето къде става нещо интересно:

    за f в * .zip; разархивирайте $ f;

    Ами сега! Изглежда, че не работи.

    Вместо това трябва да използваме двойни кавички около променливата $ f, като тази:

    за f в * .zip; разархивирайте "$ f";

    Сега всеки път, когато командата за команда преминава през цикъла, тя действително ще изпълни команда като тази:

    разархивирайте "test 1.zip"

    Разбира се, че ще премине и изпълни подобна команда за всеки файл в директорията.

    Нека разгледаме

    Сега, след като прегледахме примерите, ще прегледаме бързо, в случай че сте го пропуснали:

    Двойни цитати

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

    Единични цитати

    • Всички символи в единични кавички се интерпретират като символен низ.

    И така завършва урока на цитатите. Използвайте ги разумно.