Vispārīgais noteikums ir tāds, ka divkāršās kotācijas joprojām atļauj mainīgo lielumu paplašināšanu pēdiņās, un atsevišķas kotācijas nav. Turpiniet lasīt.
Citāti ar vienkāršu tekstu
Ja jūs vienkārši pievienojat dažus teksta vārdus, patiešām nav nozīmes tam, ko jūs izmantojat, jo viņi abi strādā vienādi. Piemēram, šīs divas komandas izveidos direktoriju ar nosaukumu Test Directory:
mkdir 'Test Directory' mkdir 'Test Directory'
Iespējams, ka pieredzējušākie veidi domā, ka jūs varētu arī izmantot mkdir Test Directory, ja vēlaties.
Shell mainīgo paplašināšana
Atšķirība starp viena un divām kotētām kļūst svarīgāka, ja runājat ar mainīgajiem lielumiem pēc komandrindas pēc noklusējuma, bash gatavojas paplašināt mainīgo, piemēram, $ testu, uz pilnu virkni. Vispirms mēs piešķirsim mainīgo:
test='This is a test'
Tagad jūs varat izmantot šo mainīgo komandrindā, piemēram, šo, kas vienkārši jāizdod Šis ir tests uz konsoli:
echo $test
Šeit ir redzama vieta, kur atšķirība starp divām un vienvietīgām kotācijām kļūst skaidrāka - ja jūs izmantojat vienotās cenas, mainīgie vairs netiks paplašināti. Piemēram, ja palaižat šo komandu:
echo '$test'
Kad izmantojat vienotās cenas, komandu rindā nekas netiks rādīts kā '$ test', bet, ja izmantosiet divkāršās pēdiņas, tas tiks pareizi parādīts:
Tas pats notiek, ja jūs izmantojat `` rakstzīmi, lai komandrindu izvērstu komandu. Piemēram, teiksim, ka vēlējāties izmantot pwd komanda no citas komandas, jūs varētu izmantot aizmugurē, lai pastāstītu čaumalam, lai to paplašinātu:
echo `pwd`/test
Ja jūs atradāt mājas mapē, jūs redzētu izvadu, kas izskatījās šādi:
/home/geek/test
Piemēram, tev ir mape, kurā ir vieta ceļā, un jūs vēlaties izmantot komandu ln, lai izveidotu simbolisku saiti uz failu pašreizējā direktorijā. Lietojot ln komandu, parasti ir jānorāda pilnais ceļš, tāpēc ir daudz vieglāk izmantot "pwd", lai saglabātu rakstīšanu.
Paskaties, kas notiek, mēģinot un izmantot komandu, neiekļaujot citātus:
ln –s `pwd`/test /home/geek/linkedname
ln –s '`pwd`/filename' /some/other/path
Lai iegūtu konkrētāku piemēru, pieņemsim, ka mums šajā mapē ir mapju struktūra, kurā visiem faila nosaukumiem ir atstarpes:
for f in *.zip;do unzip $f;done
Hmm … Izskatās, ka tas nedarbojās.
for f in *.zip;do unzip '$f';done
Tagad katru reizi, kad komanda izpilda cilpu, tā patiešām izpildīs komandu kā šis:
unzip 'test 1.zip'
Protams, tas izveidotu cilpu un palaistu līdzīgu komandu katram mapes failam.
Apskatīsim
Tagad, kad mēs esam izgājuši piemērus, mēs vienkārši ātri pārskatīsim, ja jūs to pazaudējāt:
Dubultās cenas
- Izmantojiet, ja vēlaties pievienot mainīgos lielumus vai izmantot virknes apvalku.
- Visas rakstzīmes tiek interpretētas kā parastās rakstzīmes, izņemot $ vai `, kas tiks izvērsta uz čaulas.
Vieni centieni
Visas rakstzīmes vienotās pēdiņas tiek interpretētas kā virknes rakstzīmes.
Un tādējādi beidzas citātu mācība. Izmantojiet tos saprātīgi.