Linux -settkommandoen

Linux -settkommandoen

Linux Set-kommandoen er en innebygd skallkommando som lar deg vise eller stille både skall- og miljøvariabler. I denne guiden dekker vi den angitte kommandoen og demonstrerer de forskjellige måtene kommandolinjeverktøyet kan brukes.

Grunnleggende syntaks

Set -kommandoen tar følgende syntaks:

$ Kommando -Options Argumenter

Kommandoalternativer

Det er ganske mange alternativer som kan brukes med den angitte kommandoen. La oss utforske noen av dem:

  • -en: Alternativet setter alle opprettet eller modifiserte variabler eller funksjoner for eksport.
  • -b -B -alternativet varsler umiddelbart brukeren når bakgrunnsjobbene blir avsluttet.
  • -e: Alternativet -alternativet instruerer et skall til å avslutte hvis en kommando gir en ikke -null utgangsstatus. Enkelt sagt, skallet går ut når kommandoen mislykkes.
  • -f: Alternativet -f -alternativet deaktiverer generasjonen av filnavn.
  • -h: Alternativet -h er aktivert som standard. Den lokaliserer og husker deretter en funksjon som den venter på utførelse.
  • -n: Alternativet -N -alternativet leser bare kommandoer, men klarer ikke å utføre dem.
  • -t: Alternativet -t går ut ved å lese og kjøre en kommando.
  • -u: Alternativet -u behandler usett eller udefinerte variabler bortsett fra spesielle parametere som jokertegn (*) eller “@” som feil under parameterutvidelse.
  • -v: Alternativet -V skriver ut linjene til skallinngangen når de leses.
  • -x: Alternativet -x -alternativet skriver ut kommando argumenter under utførelse

Avslutt verdier

Følgende er skallutgangsverdiene tilknyttet den angitte kommandoen:

0: Kommandoen var vellykket.

  1. Kommandoen mislyktes på grunn av et feil kommando -argument
  2. Kommandosvikt på grunn av et forventet argument som mangler

Angi kommando uten alternativer

Uten noen argumenter viser den angitte kommandoen alle skallvariablene, inkludert verdiene deres.

$ sett

Angi posisjonsparametere med den angitte kommandoen

Linux Set -kommandoen kan brukes til å tilordne verdier til posisjonsparametere. En posisjonsparameter er en variabel i et skallprogram, og verdien blir referert til som $ n der n er et siffer som angir parameterens plassering.

Verdien på $ 1 er den første posisjonsparameteren etter navnet på filen eller kommandoen. $ 2 -verdien er den andre parameteren, og så videre.

Anta at vi utfører kommandoen vist nedenfor:

$ sett rødblå grønn

Her tilsvarer rødt posisjonsparameter $ 1, blå tilsvarer parameteren $ 2, og til slutt tilsvarer grønn $ 3.

For å liste opp alle parametrene i størrelsesorden $ 1 $ 2 $ 3 Kjør Echo -kommandoen nedenfor:

$ ekko “$*”

For å liste opp den første parameteren, utfør:

$ ekko $ 1

For å liste opp den andre parameteren, kjør: Kjør:

$ ekko $ 2

Og så videre.

Bruk SET -kommandoen for å fjerne alle posisjonsparametere

For å fjerne posisjonsparametrene, kjør den angitte kommandoen med doble bindestrekninger - som vist.

$ sett --

Nok en gang, hvis du prøver å liste opp posisjonsparametrene, vil du få blank output, noe som antyder at de har vært usett.

Ignorer en ubundet variabel

Som standard har et skallskript med utsikt over en udefinert variabel. I skriptet myscript.SH vist nedenfor er ikke $ foo -variabelen definert ennå, og eksisterer derfor ikke.

Når skriptet kjøres, returnerer det en tom linje for linjen som inneholder en ikke-eksisterende variabel og fortsetter med å utføre følgende linje:

$ ./MyScript.sh

Denne anomalien er uønsket, og utviklerne ønsker å bli varslet i tilfelle udefinerte variabler. Set -u -direktivet i starten av skriptet vil skrive ut en feil på skallet hvis skriptet går inn i en udefinert variabel.

Når skriptet kjøres igjen, vises feilen om en ubundet variabel.

Vis en feil hvis en kommando er ikke-eksisterende

Vanligvis, hvis en kommando får en feil og ikke klarer å utføre, vil bashskallet fortsette å utføre de gjenværende kommandoene. Ta for eksempel skallskriptet nedenfor:

Kommandoen Foobar er ikke-eksisterende, og en feil skal vises på bash-skallet når skriptet utføres for å vise at skriptet til et problem. Dette skjer imidlertid ikke, og skallet går med for å utføre neste linje som vist:

Som det forrige eksemplet er dette ikke god praksis når du skriver skallskript, spesielt for sikkerhet og feilsøking. Ideelt sett bør manuset stoppe når det møter en feil. For å adressere dette scenariet, definer direktivsettet -e i starten av skriptet som vist.

Når du prøver å kjøre skriptet igjen, vil du løpe inn i feilen som vist:

Vis en feil i rørkommandoer

Direktivsettet -e fungerer ikke når du arbeider med PIPED -kommandoer. Tenk på skriptet nedenfor:

Når du kjører skriptet, returnerer det en feil, men fortsetter å kjøre den påfølgende kommandoen:

For å overvinne dette hinderet, pass den sett -eo pipefail -direktivet som vist:

$ set -eo pipefail

Denne gangen avsluttes manuset og utfører ikke neste linje.

Definere allexport og varsle alternativer

For å angi Allexport og varsle alternativer, kjør kommandoen:

$ set -o allexport -o varsle

Konklusjon

Det var noen få eksempler på hvordan du kan bruke SET -kommandoen i skallskriptene dine. Som observert kan den angitte kommandoen være et nyttig verktøy for å sette posisjonsparametere og feilsøke skallskriptene dine.