Početna » kako da » Koja je razlika između pojedinačnih i dvostrukih citata u Bash ljusci?

    Koja je razlika između pojedinačnih i dvostrukih citata u Bash ljusci?

    Unos teksta u navodnike prilično je uobičajena praksa u naredbenom retku, pogotovo kada se radi o datotekama koje imaju razmake u imenima, ali kako znate da li koristiti jednostruke ili dvostruke navodnike? Pogledajmo razliku, i kada trebamo koristiti jednu nasuprot drugoj.

    Opće je pravilo da dvostruki navodnici još uvijek dopuštaju širenje varijabli unutar navodnika, a pojedinačni navodnici ne. Nastavi čitati.

    Citati s jednostavnim tekstom

    Ako jednostavno stavljate nekoliko riječi u tekst, zapravo nije važno koji ćete upotrijebiti, jer će oboje raditi potpuno isto. Na primjer, ove dvije naredbe će stvoriti direktorij pod imenom Test Directory:

    mkdir "Test Directory"
    mkdir "Test Directory"

    Više iskusni tipovi će vjerojatno primijetiti da možete koristiti i mkdir Test Directory ako ste htjeli.

    Shell Variable Expansion

    Razlika između jednostrukih i dvostrukih navodnika postaje važnija kada se bavite varijablama u naredbenom retku po defaultu, bash će proširiti varijablu kao što je $ test u cijeli niz. Prvo ćemo dodijeliti varijablu:

    test = "Ovo je test"

    Sada možete koristiti ovu varijablu u naredbenom retku, kao što je ova, koja bi trebala jednostavno izlaziti Ovo je test na konzolu:

    echo $ test

    Evo gdje razlika između dvostrukih i pojedinačnih navodnika postaje jasnija - kada koristite jednostruke navodnike, varijable se neće proširiti. Na primjer, ako pokrenete ovu naredbu:

    echo '$ test'

    Nećete vidjeti ništa osim '$ test' u naredbenom retku kada koristite jednostruke navodnike, ali će se ispravno prikazati kada koristite dvostruke navodnike:

    Ista stvar radi kada koristite znak 'da biste proširili naredbu u naredbenom retku. Recimo da ste htjeli koristiti pwd naredbu iz druge naredbe - upotrijebili bi backticks da bi se ljuska rekla da ga proširi:

    echo 'pwd' / test

    Ako ste bili u matičnoj mapi, vidjeli biste izlaz koji je izgledao ovako:

    / Home / monstrum / test

    Recimo, na primjer, nalazite se u mapi koja ima razmak u putanji i želite koristiti naredbu ln za stvaranje simboličke veze do datoteke u trenutnom direktoriju. Prilikom upotrebe naredbe ln obično trebate navesti punu stazu, tako da je mnogo lakše koristiti 'pwd' za spremanje tipkanja.

    Pogledajte što se događa kada pokušate upotrijebiti naredbu bez navođenja u navodnike:

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

    Umjesto toga, trebate okružiti navodnike:

    ln -s "'pwd' / filename" / neki / drugi / put

    Za konkretniji primjer pretpostavimo da imamo strukturu mapa kao što je ovaj primjer, gdje svi nazivi datoteka imaju mjesta u njima:

    Budući da naredba unzip ne podržava korištenje * da bi se pokrenula protiv svih datoteka, umjesto toga trebate koristiti naredbu for. Ovdje su stvari zanimljive:

    za f u * .zip; unzip $ f; učinjeno

    Uh! Izgleda da nije uspjelo.

    Umjesto toga trebamo koristiti dvostruke navodnike oko $ f varijable, kao što je ovaj:

    za f u * .zip; unzip "$ f"; učinjeno

    Sada svaki put kada naredba za naredbu prođe kroz petlju, zapravo će pokrenuti naredbu poput ove:

    unzip "test 1.zip"

    Naravno, to bi se provlačilo i izvodilo sličnu naredbu za svaku datoteku u imeniku.

    Razmotrimo

    Sada kada smo prošli primjere, brzo ćemo pregledati u slučaju da ste ga propustili:

    Dvostruki citati

    • Koristite kada želite priložiti varijable ili koristiti proširenje ljuske unutar niza.
    • Svi znakovi unutar se tumače kao regularni znakovi osim za $ ili 'koji će se proširiti na ljusci.

    Pojedinačni citati

    • Svi znakovi unutar pojedinačnih navodnika tumače se kao znak znaka.

    I tako završava lekciju citata. Koristite ih mudro.