Kāda ir atšķirība starp vienreizējām un dubultajām cenām Bash apvalkā?

Satura rādītājs:

Kāda ir atšķirība starp vienreizējām un dubultajām cenām Bash apvalkā?
Kāda ir atšķirība starp vienreizējām un dubultajām cenām Bash apvalkā?

Video: Kāda ir atšķirība starp vienreizējām un dubultajām cenām Bash apvalkā?

Video: Kāda ir atšķirība starp vienreizējām un dubultajām cenām Bash apvalkā?
Video: Google Advanced Search IN 3 minutes! - YouTube 2024, Aprīlis
Anonim
Teksta pievienošana pēdiņās ir diezgan ierasta prakse komandrindā, it īpaši, runājot ar failiem, kuru nosaukumos ir atstarpes, bet kā jūs zināt, vai izmantot vienotu vai divkāršu pēdiņām? Apskatīsim atšķirību, un kad vajadzēs lietot vienu pret otru.
Teksta pievienošana pēdiņās ir diezgan ierasta prakse komandrindā, it īpaši, runājot ar failiem, kuru nosaukumos ir atstarpes, bet kā jūs zināt, vai izmantot vienotu vai divkāršu pēdiņām? Apskatīsim atšķirību, un kad vajadzēs lietot vienu pret otru.

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:

Image
Image

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

Tā vietā jums būs jāiekļauj pēdiņas:
Tā vietā jums būs jāiekļauj pēdiņas:

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:

Tā kā komanda unzip neatbalsta, izmantojot *, lai palaistu to pret visiem failiem, jums tā vietā jāizmanto komanda. Šeit ir interesantas lietas:
Tā kā komanda unzip neatbalsta, izmantojot *, lai palaistu to pret visiem failiem, jums tā vietā jāizmanto komanda. Šeit ir interesantas lietas:

for f in *.zip;do unzip $f;done

Hmm … Izskatās, ka tas nedarbojās.

Tās vietā, kas mums būs jādara, ir jāizmanto dubultās kotācijas ap $ f mainīgo, piemēram, šo:
Tās vietā, kas mums būs jādara, ir jāizmanto dubultās kotācijas ap $ f mainīgo, piemēram, šo:

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.

Ieteicams: