En innsikt i Linux "variabler" i Shell Scripting Language - del 9


Vi har allerede skrevet en serie artikler om Linux Shell Scripting som ble ønsket velkommen den gangen, og det var mye relevant selv nå. Her er lenken til samlingen av artikler om shell-scripting.

  1. Lær Linux Shell-skripting

Her i denne artikkelen vil vi se variablene, dens utførelse og dens implementering i shell script.

Lagre en utgang

Utdataene fra en kommando kan omdirigeres til standardutdata eller en fil og kan også lagres i en variabel. Hvis utgangen av en kommando er stor nok til at den ikke passer til skjermen, har vi bare muligheten til å lagre utdata til en fil i en variabel. En fordel med å lagre utdata til variabel er raskere undersøkelseshastighet. Variabler lagres i minnet, og derfor har det en tendens til å være raskt sammenlignet med henting fra fil.

Variabler i skriptspråk

Variabler er en viktig komponent som brukes i Shell-skripting og er deklarert ved å bruke bash-kommandoen «Declare ». For å erklære en variabel si «nivå», må vi utføre kommandoen nedenfor.

declare LEVEL

Merk: Vi må bruke "typecast ", en innebygd setning for kompatibilitet med kornskall. "Declare" er mer avansert og inneholder alle funksjonene, og anbefales derfor når du bruker BASH.

Regler
  1. Et variabelnavn må rettferdiggjøre bruken av variabel i skriptet.
  2. Det anbefales på det sterkeste å bruke samme variabelnavn gjennom hele programmet.
  3. Variablenavn kan være store og små bokstaver, men etter konvensjon er shell-kommandoer med små bokstaver, og derfor bør vi bruke variabelnavn med store bokstaver, for å fjerne enhver forvirring. f.eks. TOTAL_BILLED_AMOUNT, SELL_REPORT, ORDER_RECEIPT osv.

Gjennomføring

En variabel kan tildeles en verdi ved å bruke et likhetstegn (=). For å tilordne en tom streng til en variabel må vi ikke oppgi noen verdi etter likhetstegnet.

LEVEL =

Sjekk verdien som er lagret i variabel 'LEVEL' som.

printf "%i" $LEVEL

printf, kommandoen de fleste «C»-programmerere er klar over, skriver ut data. %i – Representerer heltall. Vi kan erstatte den med %c for tegn eller %c for streng, etter behov.

$LEVEL: Legg merke til «$» som fungerer som verdierstatter for variabelen «LEVEL».

Eksempelutgang
printf "%i" $LEVEL
0

Tilordne en verdi til variabelen.

LEVEL=0

Sjekk de lagrede dataene i variabel.

printf "%i" $LEVEL
0

MERK: Det er interessant å merke seg at i begge tilfellene, når vi ikke tildelte verdien til variabelen og når vi tilordnet verdien '0<' til variabelen 'LEVEL' gir ut 0. Selv om utgangen er den samme i begge tilfellene, håndterer shell-skriptet både variabeldeklarasjonen annerledes.

Tilordne en ny verdi til variabelen.

LEVEL=121

Sjekk de lagrede dataene i variabel.

printf "%i" $LEVEL
121

Deaktiver en variabel

Declare er en BASH-kommando og den lager variabel bare når den utføres. Variabelen slik opprettet forblir i minnet til skriptet stopper eller variabelen blir ødelagt.

unset LEVEL

Forhåndsdefinerte variabler i BASH

BASH har over 50 forhåndsdefinerte variabler. Noen av disse variablene har en spesiell betydning knyttet til BASH, f.eks. gir en variabel RANDOM et tilfeldig tall. Hvis den er deaktivert og deretter definert igjen, går den opprinnelige variabelverdien tapt for alltid. Derfor anbefales det ikke å bruke noen systemdefinerte variabler.

Her er en liste over noen nyttige BASH-variabler.

  1. BASH – Det fulle banenavnet til Bash.
  2. BASH_ENV—I et shell-skript, navnet på profilfilen som ble utført før skriptet ble startet.
  3. BASH_VERSION—Versjonen av Bash (for eksempel 2.04.0(1)-utgivelse).
  4. KOLONNER – Antall tegn per linje på skjermen (for eksempel 80).
  5. VERTSNAVN—navnet på datamaskinen. Under noen versjoner av Linux kan dette være maskinnavnet. På andre kan det være et fullt kvalifisert domenenavn.
  6. HOSTTYPE—Type datamaskin.
  7. HJEM – Navnet på hjemmekatalogen din.
  8. OSTYPE—Navnet på operativsystemet.
  9. PATH – Kolon-separert liste over søkebaner for å finne en kommando som skal utføres.
  10. PPID – prosess-ID-en til skallets overordnede prosess.
  11. PROMPT_COMMAND—Kommando som skal utføres før innstillingen av den primære ledetekststrengen for PS1.
  12. PWD—Gjeldende arbeidskatalog (som angitt av cd-kommandoen).
  13. TILFELDIG – Returnerer et tilfeldig tall mellom 0 og 32767 hver gang det refereres til det.
  14. SHELL—Det foretrukne skallet å bruke; for programmer som starter et skall for deg.
  15. TERM—Terminalemuleringstypen (for eksempel konsoll).

Regelen for orddeling.

LEVEL=0
printf "%i" $LEVEL
0

AND

LEVEL=”0”
printf "%i" $LEVEL
0

I begge tilfeller forblir utgangen den samme. Så hva er forskjellen i resultat når du bruker tilbud?

La oss sjekke det samme med forskjellige variable data.

LEVEL=0 ; 1 ; 2 ; 3 ; 4 ; 5
bash: 1: command not found 
bash: 2: command not found 
bash: 3: command not found 
bash: 4: command not found 
bash: 5: command not found
printf "%i" $LEVEL
0

For ikke å nevne, utgangen er ikke korrekt. BASH tar plassen etter «0» som avslutning, og derfor er verdien av variabelen satt til «0». Nå prøver vi å bruke sitat for variabler som nedenfor.

LEVEL=”0 ; 1 ; 2 ; 3 ; 4 ; 5”
printf "%s" $LEVEL 
0;1;2;3;4;5

Resultatet er likevel ikke riktig. BASH tok variabelverdiene og fjernet alle mellomrommene mellom dem. Derfor tolket ikke printf 0,1,2,3,4,5 som distinkte verdier. Så hva er løsningen?

printf "%s" "$LEVEL" 
0 ; 1 ; 2 ; 3 ; 4 ; 5

Ja! Å sette Variabelsubstitusjonen under anførselstegn er løsningen. Sitater grupperer tegn i skall og tolker spesialtegnene på en meningsfull måte.

Sitater kan brukes rygg-til-rygg, og det er en god idé å legge ved variable erstatninger med anførselstegn. Dessuten kan den brukes til å skille overordnet tekst fra sitater. Her er et eksempel.

LEVEL=5 
FLAG_MESSAGE="I HAVE CLEARED LEVEL""$LEVEL"". I Deserve appreciation." 
printf “%s” “$FLAG_MESSAGE”
“I HAVE CLEARED LEVEL5. I Deserve appreciation.”

Å skille biter av sitert tekst med mellomrom vil resultere i det samme problemet som diskutert ovenfor. Bash vil behandle hvitt mellomrom som avslutning. En annen måte for variabel substitusjon er.

LEVEL=5

FLAG_MESSAGE="I HAVE CLEARED LEVEL ${LEVEL}. I Deserve appreciation." 

printf “%s” "$FLAG_MESSAGE" 
“I HAVE CLEARED LEVEL 5. I Deserve appreciation.”

Enkelte anførselstegn begrenser BASH fra å skrive ut spesialtegn.

printf “%s” '$FLAG_MESSAGE'
“$FLAG_MESSAGE”

Omvendt skråstrek (/)

Omvendt skråstrek fungerer som enkelt anførselstegn for ett tegn. Har du tenkt på hvordan du vil skrive ut ()?

printf "%c" "\""

Når %q grupperes med printf, gir omvendt skråstrek etter hvert ord for å sikre ordavstand.

LEVEL=5

FLAG_MESSAGE="I HAVE CLEARED LEVEL ${LEVEL}. I Deserve appreciation." 

printf “%q” "$FLAG_MESSAGE" 
“I\ HAVE\ CLEARED\ LEVEL\ 5.\ I\ Deserve\ appreciation.”

Det er alt for nå. Vi prøver alltid å gi leserne våre artikler som er nyttige for dem nå og da. Den dekkede artikkelen ovenfor er enorm, og resten av emnene med eksempler vil bli produsert i den neste artikkelen som vil inkludere "Attributter til variabel", "Variabeleksport" osv.

Inntil da Følg med og koble til linux-console.net. Ikke glem å gi oss din verdifulle tilbakemelding i kommentarfeltet nedenfor.