Bash Command Expansion

Bash Command Expansion

Når du jobber med kommandoer i bash, vil du nå et punkt hvor du må bruke utgangen fra en gitt kommando som en verdi for en gitt variabel. Kommandoutvidelse er et begrep som brukes til å referere til Kommandosubstitusjon der utgangen fra en gitt kommando blir brukt i stedet for kommandoen. Ideelt sett blir kommandoen utført, og verdien erstatter kommandoen, og i de fleste tilfeller brukes den når den arbeider med variabler.

Bash -kommandoutvidelse kommer til nytte når du må bruke en gitt variabel hvis verdier ennå ikke er kjent med mindre kommandoen først utfører. Denne guiden dekker forskjellige eksempler for å forstå hvordan du jobber med Bash -kommandosubstitusjon.

Hvordan du bruker base -kommandoutvidelse

Kommandoutvidelse kan brukes på to måter.

Du kan legge inn det som i syntaksen nedenfor:

$ (kommando)

Alternativt kan du bruke backticks, som vist under.

'kommando'

Når du bruker Bash -substitusjon i et skript, vil output fra kommandoen erstatte kommandoen når den kjøres.

For eksempel, hvis du trenger å skrive en kommando som skriver ut gjeldende dato og tid og oppetid når du utfører skriptet, kan vi ha et skript skrevet som vist nedenfor.

Vi har laget en variabel i skriptet, men verdien avhenger av kommandoens utgang. Vi skriver også ut verdien til den deklarerte variabelen ved å bruke ekko kommando. Det er et tilfelle av Bash Command -substitusjon. La oss utføre kommandoen og se hvordan den oppfører seg.

Merk at eventuelle etterfølgende linjer når du skriver ut utdataene, blir slettet når du bruker kommandosubstitusjon. La oss for eksempel bruke SEQ -kommando For å skrive ut verdier fra 1 til 10, hopper du over to verdier. Hvis vi kjører kommandoen nedenfor, vil vi merke at hver nye linje blir regnskapsført for.

$ SEQ 1 2 10

Imidlertid, hvis du bruker kommandosubstitusjon for den samme kommandoen, vil utgangen være annerledes etter hvert som de nye linjene blir slettet.

Bash kommandoutvidelse på løkker

Hvis du har et gitt skript som skal utføre en gitt oppgave, men verdiene til den variabelen avhenger av kommandoen, kan du bruke bash -utvidelsen. For eksempel, hvis du hadde en fil som inneholder navnene på IP -adresser, kan du kjøre en for sløyfe For å utføre en gitt oppgave basert på navnene på den filen.

Skriptet nedenfor åpner en fil ved hjelp av katt kommando og skriver ut filens innhold på det nåværende skallet.

Her er utdataene som bekrefter at du kan bruke Bash -substitusjon med løkker.

Kommandoutvidelse og parameterutvidelse

Bash -kommandoutvidelse er nesten lik parameterutvidelsen. I bashstatus bruker vi $ (), Mens vi er for parameterutvidelse, bruker vi $ . Parameterutvidelsen beskytter en variabel mot kommandoutvidelse. La oss ha et eksempel å forstå.

I eksemplet over lager vi en variabel som heter Dato. Hvis vi gjenspeiler variabelen ved hjelp av parameterutvidelsen, får vi at vi skriver ut variabelenes verdi etterfulgt av ordet lagt til etter den variable verdien.

Imidlertid ser vi i kommandosubstitusjonseksemplet at kommandoen Dato, som skriver ut gjeldende dato og tid, blir erstattet, og utgangen brukes i stedet for kommandoen.

Så hvis du ikke vil at en variabel skal behandles som et tilfelle av kommandoutvidelse, bruk $ i stedet for $ ().

Konklusjon

Bash -kommandoutvidelse er det samme som kommandosubstitusjon. Denne guiden har forklart hvilken kommandoutvidelse betyr, og vi har gitt forskjellige eksempler for å forstå hvordan du kan bruke kommandoutvidelse til bashskriptene dine. Den viktigste takeaway er at kommandosubstitusjon er når utgangen fra en kommando brukes i stedet for selve kommandoen når du får eller setter verdien av en variabel.