Pagina principala » HOWTO » Care este diferența dintre cotațiile unice și cele duble în Bash Shell?

    Care este diferența dintre cotațiile unice și cele duble în Bash Shell?

    Încadrarea textului în ghilimele este o practică destul de standard pe linia de comandă, mai ales când se ocupă de fișiere care conțin spații în nume, dar cum știți dacă să utilizați ghilimele simple sau duble? Să aruncăm o privire la diferența și când ar trebui să folosiți una față de cealaltă.

    Regula generală este că ghilimele duble permit în continuare extinderea variabilelor în cadrul cotelor, iar ghilimele simple nu. Continua să citești.

    Citate cu text simplu

    Dacă pur și simplu închideți câteva cuvinte de text, nu contează cu adevărat pe ce folosiți, deoarece ambele vor funcționa exact la fel. De exemplu, aceste două comenzi vor crea atât un director numit Test Directory:

    mkdir "Director de testare"
    mkdir 'Test Directory'

    Mai multe tipuri de experți vor observa, probabil, că puteți utiliza și mkdir Test \ Directory dacă doriți.

    Shell Extensie variabilă

    Diferența dintre ghilimele simple și cele duble devine mai importantă atunci când aveți de-a face cu variabilele de pe linia de comandă; în mod implicit, bash va extinde o variabilă ca testul $ în șirul complet. Mai întâi, vom atribui variabila:

    test = "Acesta este un test"

    Acum puteți utiliza această variabilă pe linia de comandă, cum ar fi aceasta, care ar trebui să emită pur și simplu Acesta este un test la consola:

    echo $ test

    Iată în cazul în care diferența dintre ghilimele duble și cele simple devine mai clară - când utilizați citate simple, variabilele nu vor fi extinse. De exemplu, dacă executați această comandă:

    echo '$ test'

    Veți vedea numai "$ test" pe linia de comandă atunci când utilizați citare simple, dar se va afișa corect când utilizați ghilimele duble:

    Același lucru funcționează atunci când utilizați caracterul "pentru a extinde o comandă pe linia de comandă. De exemplu, spuneți că doriți să utilizați PWD comandă din cadrul unei alte comenzi - utilizați spițe pentru a spune coajă să-l extindă:

    echo 'pwd' / test

    Dacă v-ați afla în dosarul dvs. de domiciliu, ați vedea ieșirea care arăta astfel:

    / Home / tocilar / testare

    Spuneți, de exemplu, că sunteți într-un dosar care are un spațiu în cale și doriți să utilizați comanda ln pentru a crea o legătură simbolică cu un fișier din directorul curent. De obicei, trebuie să specificați calea completă atunci când utilizați comanda ln, deci este mult mai ușor să utilizați 'pwd' pentru a salva tastarea.

    Uită-te ce se întâmplă atunci când încerci să folosești comanda fără a închide în citate:

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

    În schimb, va trebui să înconjurați în citate:

    ln -s "" pwd "/ nume fișier" / some / other / path

    Pentru un exemplu mai concret, să presupunem că avem o structură de directoare ca acest exemplu, unde toate numele fișierelor au spații în ele:

    Deoarece comanda de dezarhivare nu acceptă folosirea * pentru ao executa împotriva tuturor fișierelor, va trebui să utilizați comanda for. Iată unde lucrurile devin interesante:

    pentru f în * .zip; dezarhivați $ f; terminat

    Hopa! Se pare că nu a funcționat.

    Ceea ce vom avea nevoie să facem este să utilizați ghilimele în jurul variabilei $ f, după cum urmează:

    pentru f în * .zip; dezarhivează "$ f"; terminat

    Acum, de fiecare dată când comanda va trece prin bucla, va executa de fapt o comandă ca aceasta:

    dezarhivați "testul 1.zip"

    Bineînțeles că va trece printr-o comandă similară pentru fiecare fișier din director.

    Să recapitulăm

    Acum că am trecut prin exemple, vom examina rapid în cazul în care ați pierdut-o:

    Citate dublă

    • Utilizați când doriți să închideți variabilele sau să folosiți extensia shell-ului în interiorul unui șir.
    • Toate caracterele din interiorul sunt interpretate ca caractere obișnuite, cu excepția celor $ sau 'care vor fi extinse pe shell.

    Citate unice

    • Toate caracterele din citatele singulare sunt interpretate ca un caracter șir.

    Și astfel se încheie lecția citatelor. Utilizați-le cu înțelepciune.