Feilhåndtering er en veldig viktig del av ethvert programmeringsspråk. Bash har ikke noe bedre alternativ enn andre programmeringsspråk for å håndtere feilen i skriptet. Men det er viktig å gjøre Bash-skriptet feilfri på tidspunktet for utførelse av skriptet fra terminalen. Feilhåndteringsfunksjonen kan implementeres for bashskriptet på flere måter. De forskjellige teknikkene for å håndtere feilene i bashskriptet vises i denne opplæringen.
Eksempel 1: Feilhåndtering ved hjelp av en betinget uttalelse
Lag en bash -fil med følgende skript som viser bruken av den betingede uttalelsen for feilhåndtering. Den første "hvis" -uttalelsen brukes til å sjekke det totale antallet kommandolinjeargumenter og skrive ut en feilmelding hvis verdien er mindre enn 2. Deretter er utbytte- og divisorverdiene hentet fra kommandolinjeargumentene. Hvis divisorverdien er lik 0, genereres en feil og feilmeldingen skrives ut i feilen.txt -fil. Den andre “hvis” -kommandoen brukes til å sjekke om feilen.TXT -filen er tom eller ikke. En feilmelding skrives ut hvis feilen.txt-filen er ikke-tomt.
#!/bin/bash
#Sjekk argumentverdiene
hvis [$# -lt 2]; deretter
ekko "ett eller flere argumenter mangler.""
exit
fi
#Read utbytteverdien fra det første kommandolinjeargumentet
Utbytte = $ 1
#Read Divisor-verdien fra det andre kommandolinjeargumentet
Divisor = $ 2
#Divide utbyttet av divisoren
resultat = 'ekko "skala = 2; $ utbytte/$ divisor" | bc 2> feil.tekst'
#LEAD innholdet i feilfilen
Innhold = 'Cat Feil.tekst'
hvis [-n "$ innhold"]; deretter
#Trykk feilmeldingen hvis feilen.TXT er ikke-tom
ekko "delbar med null feil oppstod.""
ellers
#Trykk resultatet
ekko "$ utbytte/$ divisor = $ resultat"
Produksjon:
Følgende utgang vises etter å ha utført det forrige skriptet uten noe argument:
Følgende utgang vises etter å ha utført det forrige skriptet med en argumentverdi:
Følgende utgang vises etter å ha utført det forrige skriptet med to gyldige argumentverdier:
Følgende utgang vises etter å ha utført det forrige skriptet med to argumentverdier der det andre argumentet er 0. Feilmeldingen er skrevet ut:
Eksempel 2: Feilhåndtering ved hjelp av status Kode
Lag en bash -fil med følgende skript som viser bruken av bash -feilhåndteringen ved å avslutte statuskoden. Enhver bash -kommando blir tatt som inngangsverdi, og den kommandoen blir utført senere. Hvis statusen for utgangsutgang ikke er lik null, skrives det ut en feilmelding. Ellers skrives en suksessmelding.
#!/bin/bash
#Ta et Linux -kommandoavn
ekko -n "Skriv inn en kommando:"
Les CMD_NAME
#Run kommandoen
$ cmd_name
#Sjekk om kommandoen er gyldig eller ugyldig
Hvis [$? -ne 0]; deretter
Echo "$ cmd_name er en ugyldig kommando.""
ellers
ekko "$ cmd_name er en gyldig kommando.""
fi
fi
Produksjon:
Følgende utgang vises etter å ha utført forrige skript med den gyldige kommandoen. Her blir "datoen" tatt som kommandoen i inngangsverdien som er gyldig:
Følgende utgang vises etter å ha utført det forrige skriptet for den ugyldige kommandoen. Her blir "CMD" tatt som kommandoen i inngangsverdien som er ugyldig:
Eksempel 3: Stopp utførelsen på den første feilen
Lag en bash -fil med følgende skript som viser metoden for å stoppe utførelsen når den første feilen i skriptet vises. To ugyldige kommandoer brukes i følgende skript. Så to feil genereres. Skriptet stopper utførelsen etter å ha utført den første ugyldige kommandoen ved hjelp av “Set -e” -kommandoen.
#!/bin/bash
#Sett alternativet for å avslutte skriptet på den første feilen
sett -e
ekko 'Gjeldende dato og tid:'
#Valid kommando
Dato
ekko 'gjeldende arbeidskatalog:'
#Invalid kommando
CWD
Echo 'Logg inn brukernavn:'
#Valid kommando
hvem er jeg
ekko 'liste over filer og mapper:'
#Invalid kommando
liste
Produksjon:
Følgende utgang vises etter å ha utført forrige skript. Skriptet stopper utførelsen etter å ha utført den ugyldige kommandoen som er "CWD":
Eksempel 4: Stopp utførelsen for uinitialisert variabel
Lag en bash -fil med følgende skript som viser metoden for å stoppe utførelsen av skriptet for den uinitialiserte variabelen. Brukernavnet og passordverdiene er hentet fra kommandolinje -argumentverdiene. Hvis noen av verdiene til disse variablene er uinitierte, skrives det ut en feilmelding. Hvis begge variablene initialiseres, sjekker skriptet om brukernavnet og passordet er gyldig eller ugyldig.
#!/bin/bash
#Sett alternativet for å avslutte skriptet for en uinitialisert variabel
sett -u
#Sett den første kommandolinje argumentverdien til brukernavnet
Brukernavn = $ 1
#Sett den andre kommandolinje argumentverdien til passordet
Passord = $ 2
#Sjekk brukernavnet og passordet er gyldig eller ugyldig
if [[$ brukernavn == 'admin' && $ passord == 'Hidensek']]; deretter
ekko "gyldig bruker.""
ellers
ekko "ugyldig bruker.""
fi
Produksjon:
Følgende utgang vises hvis skriptet utføres uten å bruke noen kommandolinje argumentverdi. Skriptet stopper utførelsen etter å ha fått den første uinitialiserte variabelen:
Følgende utgang vises hvis skriptet blir utført med en kommandolinje argumentverdi. Skriptet stopper utførelsen etter å ha fått den andre uinitialiserte variabelen:
Følgende utgang vises hvis skriptet blir utført med to kommandolinje argumentverdier - "admin" og "skjul". Her er brukernavnet gyldig, men passordet er ugyldig. Så, "Ugyldig bruker" -melding skrives ut:
Følgende utgang vises hvis skriptet blir utført med to kommandolinje -argumentverdier - “admin” og “Hidensek”. Her er brukernavnet og passordet gyldig. Så, "gyldig bruker" -melding skrives ut:
Konklusjon
De forskjellige måtene å håndtere feilene i bashskriptet vises i denne opplæringen ved hjelp av flere eksempler. Vi håper at dette vil hjelpe bash-brukerne til å implementere feilhåndteringsfunksjonen i bash-skriptet.