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:
Avslutt verdier
Følgende er skallutgangsverdiene tilknyttet den angitte kommandoen:
0: Kommandoen var vellykket.
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.