Bendra taisyklė yra ta, kad dvigubos kabutės vis dar leidžia keisti kintamuosius per kabutes, o vieno kabučių - ne. Laikykis skaitymo.
Citatos su paprastu tekstu
Jei tiesiog pridedate keletą teksto žodžių, tikrai nesvarbu, kokį tekstą naudojate, nes jie abu dirba vienodai. Pavyzdžiui, šios dvi komandos sukurs katalogą, pavadintą Test Directory:
mkdir 'Test Directory' mkdir 'Test Directory'
Labiau patyrę tipai tikriausiai pastebės, kad jūs taip pat galėtumėte naudoti mkdir testo katalogą.
"Shell" kintamasis išplėtimas
Skirtumas tarp vienos ir dvigubos kabučių tampa vis svarbesnis, kai jūs kalbate apie kintamuosius pagal komandų eilutę pagal numatytuosius nustatymus, bash ketina išplėsti tokį kintamąjį kaip $ test į visą eilutę. Pirma, priskirsime kintamąjį:
test='This is a test'
Dabar galite naudoti šį kintamąjį komandinėje eilutėje, pvz., Tai turėtų tiesiog išeiti Čia testas prie konsolės:
echo $test
Štai, kur skirtumas tarp dvigubo ir vieno kabučių tampa aiškesnis: kai naudojate atskirus kabučių, kintamieji nebus išplečiami. Pavyzdžiui, paleidus šią komandą:
echo '$test'
Kai naudosite atskirus kabučių, komandinės eilutės metu nematysite nieko kito, bet "$ test", tačiau jis bus tinkamai išvedamas, kai naudosite dvigubas kabutes:
Tas pats veikia, kai naudojate simbolį, norėdami išplėsti komandą komandinėje eilutėje. Pavyzdžiui, pasakykite, kad norite naudoti pwd komandą iš kitos komandos-jūs naudojate užpakalines kopijas, kad galėtumėte išplėsti apvalkalą:
echo `pwd`/test
Jei esate savo namų aplanke, pamatysite tokį produkciją:
/home/geek/test
Pasakykite, kad, pavyzdžiui, esate aplanke, kuriame yra kelio vieta, ir norite naudoti komandą ln sukurti simbolinę nuorodą į failą dabartiniame kataloge. Naudodamiesi ln komanda paprastai reikia nurodyti visą kelią, todėl daug lengviau naudoti "pwd", kad išsaugotumėte spausdinimą.
Pažiūrėkite, kas atsitinka bandant naudoti komandą be kabučių:
ln –s `pwd`/test /home/geek/linkedname
ln –s '`pwd`/filename' /some/other/path
Kalbant konkretesniu pavyzdžiu, darome prielaidą, kad turime tokios aplankų struktūrą kaip šis pavyzdys, kuriuose visuose failų pavadinimuose yra tarpų:
for f in *.zip;do unzip $f;done
Oi! Atrodo, kad neveikia.
for f in *.zip;do unzip '$f';done
Dabar kiekvieną kartą, kai komanda perduoda liniją, ji iš tikrųjų paleis tokią komandą kaip ši:
unzip 'test 1.zip'
Žinoma, tai būtų kilpa ir paleisti panašią komandą kiekvienam kataloge esančiam failui.
Pažiūrėkime
Dabar, kai peržiūrėjome pavyzdžius, mes tiesiog greitai peržiūrėsime, jei praleidote tai:
Dvigubos kotiruotės
- Naudokite, kai norite pridėti kintamuosius arba naudoti plėtinio viduje eilutėje.
- Visi simboliai yra interpretuojami kaip įprasti simboliai, išskyrus $ arba `, kurie bus išplečiami ant apvalkalo.
Vieni kolekcijos
Visi simboliai per vieną kabučių interpretuojami kaip eilutės simbolis.
Ir taip baigiasi pamokų citatos. Naudok juos išmintingai.