Hvad er forskellen mellem enkelt og dobbelt citater i Bash Shell?

Indholdsfortegnelse:

Video: Hvad er forskellen mellem enkelt og dobbelt citater i Bash Shell?

Video: Hvad er forskellen mellem enkelt og dobbelt citater i Bash Shell?
Video: Google Advanced Search IN 3 minutes! 2024, Marts
Hvad er forskellen mellem enkelt og dobbelt citater i Bash Shell?
Hvad er forskellen mellem enkelt og dobbelt citater i Bash Shell?
Anonim
Vedhæftning af tekst i citatmærker er ret standard praksis på kommandolinjen, især når man beskæftiger sig med filer, der har mellemrum i navnene, men hvordan ved du, om du vil bruge enkelt eller dobbelt citater? Lad os se på forskellen, og når du skal bruge en mod den anden.
Vedhæftning af tekst i citatmærker er ret standard praksis på kommandolinjen, især når man beskæftiger sig med filer, der har mellemrum i navnene, men hvordan ved du, om du vil bruge enkelt eller dobbelt citater? Lad os se på forskellen, og når du skal bruge en mod den anden.

Den generelle regel er, at dobbelt citater stadig tillader udvidelse af variabler i citaterne, og enkelte citater gør det ikke. Fortsæt læsning.

Citater med simpel tekst

Hvis du blot vedlægger et par ord med tekst, er det ikke ligegyldigt, hvilken en du bruger, da de begge vil arbejde nøjagtigt ens. For eksempel vil disse to kommandoer både oprette en mappe med navnet Test Directory:

mkdir 'Test Directory' mkdir 'Test Directory'

Flere erfarne typer vil sandsynligvis bemærke, at du også kunne bruge mkdir Test Directory, hvis du ønskede.

Shell Variabel Udvidelse

Forskellen mellem enkelt og dobbelt citater bliver vigtigere, når du beskæftiger dig med variabler på kommandolinjen - som standard vil bash udvide en variabel som $ test til hele strengen. Først tildeler vi variablen:

test='This is a test'

Nu kan du bruge denne variabel på kommandolinjen, som denne, som blot skal output Dette er en test til konsollen:

echo $test

Her er hvor forskellen mellem dobbelt og enkelt citater bliver mere klart. Når du bruger single quotes, vil variablerne ikke blive udvidet. For eksempel, hvis du kører denne kommando:

echo '$test'

Du kan kun se '$ test' på kommandolinjen, når du bruger enkelt citater, men det vil blive sendt korrekt, når du bruger dobbelt citater:

Image
Image

Det samme virker, når du bruger 'tegnet til at udvide en kommando på kommandolinjen. Sig for eksempel at du ville bruge pwd kommando fra en anden kommando-du bruger backticks til at fortælle skalen at udvide den:

echo `pwd`/test

Hvis du var i din hjemmemappe, ville du se produktionen, der så så ud:

/home/geek/test

Sig for eksempel, at du er i en mappe, der har et mellemrum i stien, og du vil bruge kommandoen ln til at oprette et symbolsk link til en fil i den aktuelle mappe. Du skal normalt angive den fulde sti, når du bruger kommandoen ln, så det er meget nemmere at bruge `pwd` for at gemme typing.

Se hvad der sker, når du forsøger at bruge kommandoen uden at omslutte citater:

ln –s `pwd`/test /home/geek/linkedname

I stedet skal du omgive citater:
I stedet skal du omgive citater:

ln –s '`pwd`/filename' /some/other/path

For et mere konkret eksempel, lad os antage, at vi har en mappestruktur som dette eksempel, hvor alle filnavne har mellemrum i dem:

Da kommandoen Unzip ikke understøtter at bruge * til at køre den mod alle filer, skal du bruge kommandoen for til i stedet. Her er ting, der bliver interessante:
Da kommandoen Unzip ikke understøtter at bruge * til at køre den mod alle filer, skal du bruge kommandoen for til i stedet. Her er ting, der bliver interessante:

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

Ups! Det ser ud som om det ikke fungerede.

Hvad vi skal gøre i stedet, er at bruge dobbelt citater omkring variabel $ f, som denne:
Hvad vi skal gøre i stedet, er at bruge dobbelt citater omkring variabel $ f, som denne:

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

Nu hver gang kommandoen går igennem sløjfen, vil den faktisk køre en kommando som denne:

unzip 'test 1.zip'

Selvfølgelig ville det løbe igennem og køre en lignende kommando for hver fil i mappen.

Lad os gennemgå

Nu hvor vi har gennemgået eksemplerne, vil vi hurtigt gennemgå, hvis du har savnet det:

Dobbelt Citater

  • Brug når du vil vedhæfte variabler eller bruge shell ekspansion inden for en streng.
  • Alle tegn indenfor er fortolket som almindelige tegn med undtagelse af $ eller `, som vil blive udvidet på skallen.

Enkeltlige Citater

Alle tegn i enkelte citater fortolkes som en strengkarakter.

Og således slutter lektionen af citaterne. Brug dem klogt.

Anbefalede: