Pagrindinis » kaip » Koks skirtumas tarp „Single“ ir „Double Quotes“ „Bash Shell“?

    Koks skirtumas tarp „Single“ ir „Double Quotes“ „Bash Shell“?

    Teksto įtraukimas į kabutes yra gana įprasta komandų eilutėje, ypač kai kalbama apie failus, kuriuose yra pavadinimų tarpų, bet kaip žinote, ar naudoti vienkartines ar dvigubas kabutes? Pažvelkime į skirtumą ir kada turėtumėte naudoti vieną prieš kitą.

    Bendra taisyklė yra ta, kad dvigubos kabutės leidžia išplėsti kintamuosius kabutėse, o atskiros kabutės nėra. Nuolat skaitykite.

    Citatos su paprastu tekstu

    Jei paprasčiausiai pridedate keletą teksto žodžių, tai iš tikrųjų nesvarbu, kurį iš jų naudojate, nes jie abu veiks tiksliai. Pavyzdžiui, šios dvi komandos sukurs katalogą, pavadintą Test Directory:

    mkdir "Test Directory"
    mkdir 'Test Directory'

    Patyrę tipai tikriausiai pastebės, kad galite naudoti ir mkdir Test Directory, jei norite.

    Shell variable Expansion

    Skirtumas tarp vienkartinių ir dvigubų kabučių tampa svarbesnis, kai tvarkote kintamuosius komandų eilutėje pagal nutylėjimą, bash ketina išplėsti kintamąjį kaip $ test į visą eilutę. Pirma, priskirsime kintamąjį:

    test = "Tai yra testas"

    Dabar galite naudoti šį kintamąjį komandų eilutėje, kaip šis, kuris turėtų tiesiog išvesties Čia testas į konsolę:

    echo $ test

    Štai kur skirtumas tarp dvigubų ir atskirų kabučių tampa aiškesnis, kai naudojate vieną kabutę, kintamieji nebus išplėsti. Pavyzdžiui, jei vykdote šią komandą:

    echo '$ test'

    Komandos eilutėje pamatysite nieko, išskyrus „$ test“, kai naudojatės vienodomis kabutėmis, tačiau jis bus tinkamai išvestas naudojant dvigubas kabutes:

    Tas pats veikia, kai naudojate „simbolį, norėdami išplėsti komandą komandų eilutėje. Pavyzdžiui, pasakykite, kad norite naudoti pwd komanda iš kitos komandos, kurią naudosite „backticks“, norėdami papasakoti korpusui ją išplėsti:

    echo „pwd“ / testas

    Jei buvote savo namų aplanke, matytumėte tokį išvaizdą:

    / home / geek / test

    Pavyzdžiui, pasakykite, kad esate aplanke, kuriame yra tarpas, ir norite naudoti ln komandą, kad sukurtumėte simbolinę nuorodą į failą dabartiniame kataloge. Paprastai jums reikia nurodyti visą kelią, kai naudojate ln komandą, todėl daug lengviau naudoti „pwd“, kad išsaugotumėte rašymą.

    Pažvelkite, kas atsitinka, kai bandote naudoti komandą be kabučių:

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

    Vietoj to, jums reikės apsvarstyti kabutes:

    ln -s "" pwd "/ failo pavadinimas" / kai kurie / kiti / kelias

    Konkretesnis pavyzdys, tarkime, kad mes turime tokį aplanko struktūrą, kaip ir šis pavyzdys, kuriame visi failų pavadinimai juose yra tarpai:

    Kadangi „unzip“ komanda nepalaiko „*“, kad ją paleistų prieš visus failus, turite naudoti komandą „for“. Štai kur įdomūs dalykai:

    už f. * .zip; padaryti unzip $ f;

    Oi! Atrodo, kad jis neveikė.

    Vietoj to reikia naudoti dvigubas kabutes apie $ f kintamąjį:

    už f. * .zip; padaryti unzip "$ f";

    Dabar kiekvieną kartą, kai komandai eina per kilpą, tai iš tikrųjų vykdys tokią komandą:

    unzip "test 1.zip"

    Be abejo, jis kilnotų ir paleistų panašią komandą kiekvienam katalogo failui.

    Peržiūrėkime

    Dabar, kai mes išgyvenome pavyzdžius, mes greitai peržiūrėsime, jei praleisite tai:

    Dvigubos kotiruotės

    • Naudokite tada, kai norite pridėti kintamuosius arba naudoti stulpelio plėtinį.
    • Visi simboliai yra interpretuojami kaip įprasti simboliai, išskyrus $ arba ', kurie bus išplėsti ant korpuso.

    Vienos kainos

    • Visi vieno kabučių simboliai yra interpretuojami kaip eilutės simboliai.

    Ir taip baigiama kabučių pamoka. Naudokite juos protingai.