Почетна » како да » Која је разлика између појединачних и двоструких цитата у Басх љусци?

    Која је разлика између појединачних и двоструких цитата у Басх љусци?

    Унос текста у наводнике је прилично стандардна пракса у командној линији, поготово када се ради о датотекама које имају размаке у именима, али како знате да ли треба користити једноструке или двоструке наводнике? Хајде да погледамо разлику, и када треба да користимо једну против друге.

    Опште правило је да двоструки цитати и даље дозвољавају ширење варијабли унутар квота, а појединачни цитати не. Настави да читаш.

    Цитати са једноставним текстом

    Ако једноставно стављате неколико речи текста, заиста није важно који од њих користите, јер ће оба радити потпуно исто. На пример, ове две команде ће креирати директоријум под именом Тест Дирецтори:

    мкдир "Тест Дирецтори"
    мкдир 'Тест Дирецтори' \ т

    Искуснији типови ће вероватно приметити да можете да користите и мкдир тестни директоријум ако сте хтели.

    Схелл Вариабле Екпансион

    Разлика између једноструких и двоструких наводника постаје важнија када се ради о варијаблама на командној линији по дефаулту, басх ће проширити варијаблу као што је $ тест у пуном низу. Прво, доделићемо променљиву:

    тест = "Ово је тест"

    Сада можете користити ову варијаблу у командној линији, као што је ова, која би требала једноставно извести Ово је тест на конзолу:

    ецхо $ тест

    Ево где разлика између двоструких и појединачних наводника постаје јаснија - када користите једноструке наводнике, променљиве се неће проширити. На пример, ако покренете ову команду:

    ецхо '$ тест'

    Нећете видети ништа осим '$ тест' у командној линији када користите једноструке наводнике, али ће се исправно приказати када користите двоструке наводнике:

    Иста ствар ради када користите знак 'да бисте проширили команду у командној линији. На пример, реците да желите да користите пвд команду из друге команде - ви бисте користили бацктицкс да бисте рекли да га љуска прошири:

    ецхо 'пвд' / тест

    Ако сте били у матичној фасцикли, видели бисте излаз који изгледа овако:

    / хоме / геек / тест

    Рецимо, на пример, да се налазите у фасцикли која има размак у путањи и да желите да користите команду лн да бисте креирали симболичку везу ка датотеци у тренутном директоријуму. Обично морате да наведете пуну путању када користите команду лн, тако да је много лакше користити 'пвд' да бисте сачували куцање.

    Погледајте шта се дешава када покушате да користите команду без уношења у наводнике:

    лн -с 'пвд' / тест / хоме / геек / линкеднаме

    Уместо тога, мораћете да окружите цитате:

    лн -с "'пвд' / филенаме" / неки / други / путања

    За конкретнији пример, претпоставимо да имамо структуру директоријума као што је овај пример, где сви називи датотека имају размаке у њима:

    Пошто наредба унзип не подржава коришћење * да би се покренула против свих датотека, уместо тога морате да користите команду фор. Овде су ствари занимљиве:

    за ф ин * .зип; унзип $ ф; доне

    Упс! Изгледа да није успело.

    Уместо тога, треба да користимо двоструке наводнике око променљиве $ ф, као што је:

    за ф ин * .зип; унзип "$ ф";

    Сада сваки пут када наредба за команду прође кроз петљу, она ће заправо покренути наредбу попут ове:

    унзип "тест 1.зип"

    Наравно, то би се превалило и покренуло сличну команду за сваки фајл у директоријуму.

    Хајде да размотри

    Сада када смо прошли кроз примере, брзо ћемо прегледати у случају да сте га пропустили:

    Доубле Куотес

    • Користите када желите да укључите променљиве или користите проширење схелл-а унутар стринга.
    • Сви знакови у оквиру се тумаче као регуларни знакови осим за $ или 'који ће се проширити на љуску.

    Сингле Куотес

    • Сви знакови унутар појединачних наводника тумаче се као знакови знакова.

    И тако завршава лекцију цитата. Користите их мудро.