Kāda ir atšķirība starp vienreizējiem un divkāršiem piedāvājumiem Bash Shell?
Teksta pievienošana pēdiņās ir diezgan standarta prakse komandrindā, it īpaši, ja nodarbojas ar failiem, kuros nosaukumos ir atstarpes, bet kā jūs zināt, vai izmantot vienreizējas vai divkāršas pēdiņas? Apskatīsim atšķirību, un, kad jums vajadzētu izmantot vienu pret otru.
Vispārējais noteikums ir tāds, ka dubultās pēdiņas joprojām ļauj paplašināt mainīgos lielumus pēdiņās, un atsevišķas cenas nav. Turpiniet lasīt.
Citāti ar vienkāršu tekstu
Ja jūs vienkārši pievienojat dažus teksta vārdus, tas tiešām nav svarīgi, kuru jūs izmantojat, jo viņi abi darbosies tieši tāpat. Piemēram, šīs divas komandas izveidos direktoriju ar nosaukumu Test Directory:
mkdir "Test Directory"
mkdir 'Test Directory'
Vairāk pieredzējušu veidu, iespējams, ņems vērā, ka jūs varētu izmantot arī mkdir Test Directory, ja vēlaties.
Shell Variable Expansion
Atšķirība starp vienreizējām un divkāršajām pēdiņām kļūst svarīgāka, kad jūs strādājat ar mainīgajiem lielumiem komandrindas pēc noklusējuma, bash paplašinās virkni, piemēram, $ test. Pirmkārt, mēs piešķirsim mainīgo:
test = "Šis ir tests"
Tagad jūs varat izmantot šo mainīgo komandrindā, kā tas ir, kas būtu vienkārši izeja Šis ir tests konsole:
echo $ test
Lūk, kur atšķirība starp dubultām un atsevišķām pēdiņām kļūst skaidrāka, kad izmantojat atsevišķas cenas, mainīgie lielumi netiks paplašināti. Piemēram, ja palaižat šo komandu:
atbalss '$ test'
Ja izmantojat atsevišķas cenas, komandrindā redzēsiet tikai $ $ testu, bet tas tiks pareizi izvadīts, kad izmantojat dubultās cenas:
Tas pats notiek, kad izmantojat rakstzīmi, lai izvērstu komandu komandrindā. Piemēram, teikt, ka vēlaties izmantot pwd komandu no citas komandas, kuru vēlaties izmantot, lai informētu čaulu, lai to paplašinātu:
atbalss “pwd” / tests
Ja atrodaties savā mājas mapē, jūs redzētu izlaidi, kas izskatījās šādi:
/ home / geek / test
Piemēram, jūs atrodaties mapē, kurai ir vieta ceļā, un vēlaties izmantot ln komandu, lai izveidotu simbolisku saiti uz failu pašreizējā direktorijā. Lai izmantotu ln komandu, jums parasti ir jānorāda pilns ceļš, tāpēc ir daudz vieglāk izmantot pwd, lai saglabātu rakstīšanu.
Paskatieties, kas notiek, mēģinot izmantot komandu, neiekļaujot citātus:
ln -s 'pwd' / testa / mājas / ģeek / saite
Tā vietā jums būs jānorāda pēdiņas:
ln -s "'pwd' / faila nosaukums / daži / citi / ceļš
Konkrētāku piemēru pieņemsim, pieņemsim, ka mums ir mapes struktūra, piemēram, šis piemērs, kur visiem failu nosaukumiem ir atstarpes:
Tā kā unzip komanda neatbalsta *, lai to palaistu pret visiem failiem, tā vietā jāizmanto komandai. Lūk, kur lietas kļūst interesantas:
par f in * .zip, dariet unzip $ f;
Hmm! Izskatās, ka tas nedarbojās.
Tā vietā mums būs jāizmanto dubultās pēdiņas ap mainīgo $ f, piemēram:
par f ir * .zip, do unzip "$ f";
Tagad katru reizi, kad komandai iet cauri cilpai, tas patiešām darbosies ar šādu komandu:
unzip "test 1.zip"
Protams, tas būtu cilpa caur un palaist līdzīgu komandu par katru failu direktorijā.
Apskatīsim
Tagad, kad esam izgājuši cauri piemēriem, mēs vienkārši ātri pārskatīsim, ja jūs to nokavējāt:
Double Quotes
- Izmantojiet, ja vēlaties pievienot mainīgos lielumus vai izmantot čaulas paplašinājumu virknes iekšpusē.
- Visas rakstzīmes tiek interpretētas kā parastās rakstzīmes, izņemot $ vai ', kas tiks paplašinātas uz korpusa.
Vienoti kotējumi
- Visas rakstzīmes vienā citātā tiek interpretētas kā virknes raksturs.
Un tādējādi beidzas pēdu mācība. Izmantojiet tos saprātīgi.