If-setninger i Bash: slik automatiserer du små oppgaver i terminalen

Mange enkle automatiseringsjobber kan løses rett i terminalen, uten tunge verktøy eller store prosjekter. Et lite shell-skript med noen få betingelser kan spare deg for overraskende mye manuelt arbeid.
I denne artikkelen ser vi på hvordan du bruker if-setninger i Bash for å ta valg i skriptene dine. Målet er at du tryggere kan lage små, nyttige skript som faktisk hjelper deg i hverdagen.
Hva er Bash, og hvorfor bry seg om if-setninger?
Bash er standard kommandotolk på mange Linux-distribusjoner og på macOS. Når du åpner terminalen og skriver kommandoer, er det ofte Bash som tolker det du skriver.
Et shell-skript er egentlig bare en tekstfil med kommandoer som kjøres fra topp til bunn. Med if-setninger kan skriptet ta valg: gjøre noe hvis en fil finnes, hvis en kommando lykkes, eller hvis brukeren angir et bestemt argument.
Grunnstrukturen i en if-setning i Bash
Den enkleste if-strukturen i Bash ser slik ut:
Eksempel:
if [ betingelse ]; then
kommandoer
fi
Viktige detaljer:
- Det skal være mellomrom rundt hakeparentesene:
[ betingelse ] thenmå stå på samme linje somif(eller på neste linje med semikolon før)fimarkerer slutten på if-blokken
Teste om en fil eller mappe finnes
En typisk oppgave i shell-skript er å sjekke om en fil eller mappe finnes før du gjør noe med den. Bash har egne flagg for dette.
Eksempel: sjekke om en fil finnes
#!/usr/bin/env bash
FIL="konfig.json"
if [ -f "$FIL" ]; then
echo "Fant filen $FIL"
else
echo "Filen $FIL finnes ikke"
fi
Her betyr:
-f: filen finnes og er en vanlig fil-d: finnes og er en mappe-e: finnes (uansett type)
Sammenligne tall og tekst i Bash
Når du vil sammenligne tall, bruker du egne operatorer. De vanlige > og < inne i hakeparenteser tolkes som fil-omdirigering, ikke som tall-sammenligning.
Eksempel: tall-sammenligning
ALDER=20
if [ "$ALDER" -ge 18 ]; then
echo "Voksen nok"
else
echo "Ikke gammel nok"
fi
Nyttige operatorer for tall:
-eqlik-neulik-gtstørre enn-gestørre enn eller lik-ltmindre enn-lemindre enn eller lik
Bruke if med tekst og tomme variabler
For tekst bruker du vanligvis = eller != inne i hakeparentesene. Pass på å alltid sette variabler i anførselstegn, slik at mellomrom og tomme verdier ikke ødelegger skriptet.
Eksempel: sjekke argument
MODUS="$1"
if [ "$MODUS" = "prod" ]; then
echo "Kjører i produksjonsmodus"
else
echo "Kjører i testmodus"
fi
Her er $1 første argument til skriptet. Hvis brukeren ikke gir noe argument, blir "$MODUS" en tom streng, men if-setningen vil fortsatt fungere fordi vi har anførselstegn rundt.
Kombinere betingelser: og / eller

Ofte vil du sjekke flere ting samtidig, for eksempel at en fil finnes og at en variabel har en bestemt verdi. I moderne Bash kan du bruke [[ ... ]] med logiske operatorer.
Eksempel: kombinere betingelser
FIL="data.csv"
MODUS="$1"
if [[ -f "$FIL" && "$MODUS" = "import" ]]; then
echo "Klar til import"
else
echo "Kan ikke importere nå"
fi
Her betyr:
&&: og (begge betingelser må være sanne)||: eller (minst én betingelse må være sann)
If med exit codes: la kommandoer styre flyten
Nesten alle kommandoer i terminalen avslutter med en statuskode. 0 betyr vanligvis suksess, andre tall betyr en form for feil. Bash-variabelen $? inneholder exit-koden fra siste kommando.
Eksempel: stoppe skript ved feil
cp input.txt backup.txt
if [ $? -ne 0 ]; then
echo "Klarte ikke å ta backup, avbryter."
exit 1
fi
echo "Backup ok, fortsetter..."
Ofte kan du skrive dette enklere ved å sjekke kommandoen direkte:
if cp input.txt backup.txt; then
echo "Backup ok"
else
echo "Backup feilet"
fi
Et lite, men nyttig skript fra start til slutt
La oss sette sammen et enkelt skript som:
- sjekker at det finnes en gitt mappe
- tar en komprimert backup hvis alt ser greit ut
- gir tydelige feilmeldinger underveis
Eksempel: backup av mappe
#!/usr/bin/env bash
KILDE="$1"
DEST="backup.tar.gz"
if [ -z "$KILDE" ]; then
echo "Bruk: $0 /sti/til/mappe"
exit 1
fi
if [ ! -d "$KILDE" ]; then
echo "Mappen $KILDE finnes ikke"
exit 1
fi
echo "Tar backup av $KILDE til $DEST..."
if tar -czf "$DEST" "$KILDE"; then
echo "Backup fullført."
else
echo "Backup feilet."
exit 1
fi
Vanlige feil og hvordan du unngår dem
Det er noen klassiske feller i Bash som skaper mye frustrasjon, spesielt rundt if-setninger. Heldigvis kan de unngås med noen enkle vaner.
Nøkkelråd:
- ha alltid mellomrom rundt hakeparenteser (
[og]) - sett variabler i anførselstegn, for eksempel
"$FIL" - bruk
[[ ... ]]når du kombinerer flere betingelser - test skriptet med ulike inputverdier før du stoler på det
Veien videre: hva du kan utforske etter if-setninger
Når du behersker if-setninger, blir det lettere å forstå andre kontrollstrukturer i Bash som for, case og funksjoner. Disse lar deg lage mer robuste og gjenbrukbare skript.
Start gjerne med små oppgaver du faktisk trenger: rydde opp i nedlastinger, ta en enkel backup, eller sjekke status på en tjeneste. Små, konkrete skript gir rask mestringsfølelse og gjør det lettere å lære mer stegvis.









0 kommentarer