5 Bash-skripteksempler for å hjelpe deg med å lære Linux-programmering

Bash-skripting er en av de mest populære, tilgjengelige måtene å programmere Linux-datamaskinen din på. Disse enkle skripteksemplene vil hjelpe deg å forstå prosessen og introdusere deg til det grunnleggende om Bash-programmering.

1. Slik skriver du ut Hello World i Bash

Hello World-eksemplet er en flott måte å lære om et hvilket som helst programmeringsspråk, og Bash er intet unntak.

Slik skriver du ut «Hello World» med Bash:

  • Åpne et tekstredigeringsprogram og begynn å redigere en ny fil som inneholder følgende kodelinjer.
  • Den første linjen i Bash-skriptene dine skal alltid se slik ut:
     #!/bin/bash 

    Shebang-kommandoen (#!/bin/bash) er viktig siden skallet bruker den til å bestemme hvordan skriptet skal kjøres. I dette tilfellet bruker den Bash-tolken.

  • Enhver linje som begynner med et #-symbol er en kommentar. Shebang-linjen er et spesielt tilfelle, men du kan bruke dine egne kommentarer for å forklare koden din. Legg til en kommentar på linje 2, for eksempel:
      
  • Du kan skrive ut til standardutdata ved å bruke ekkokommandoen, etterfulgt av verdien du vil skrive ut. Legg til følgende på linje 3:
     echo "Hello World" 
  • Lagre skriptet, gjerne med en .sh-utvidelse, f.eks. hello_world.sh. Utvidelsen er ikke et krav, men det er en konvensjon det er nyttig å holde seg til.
  • For å kjøre skriptet, gjør filen kjørbar. Bruk kommandoen chmod («endre modus») sammen med +x («kjørbar») argumentet og navnet på skallskriptet ditt:
     chmod +x hello_world.sh 
  • Bruk denne kommandoen til å kjøre skriptet fra katalogen:
     ./hello_world.sh 
  • Når skriptet kjører, vil det skrive ut teksten «Hello World» til terminalen din:
  •   Hvordan sette opp og bruke Fragments BitTorrent Client på Linux

    2. Opprett en katalog ved å lese inndata

    Fra skriptene dine kan du kjøre et hvilket som helst program som du vanligvis kjører på kommandolinjen. For eksempel kan du opprette en ny katalog fra skriptet ditt ved å bruke mkdir-kommandoen.

  • Begynn med den samme shebang-linjen som før:
     #!/bin/bash 
  • Spør brukeren om et katalognavn ved å bruke ekkokommandoen som før:
     echo "Enter new directory name:" 
  • Bruk den innebygde lesekommandoen for å hente brukerinndata. Enkeltargumentet navngir en variabel som skallet vil lagre inndata i:
     read newdir 
  • Når du trenger å bruke verdien som er lagret i en variabel, prefikser du navnet med et dollarsymbol ($). Du kan sende innholdet i inndatavariabelen som et argument til mkdir-kommandoen for å lage en ny katalog:
     mkdir $newdir 
  • Når du kjører dette skriptet, vil det be deg om inndata. Skriv inn et gyldig katalognavn, og du vil se at skriptet oppretter det i din nåværende katalog:
  • 3. Opprett en katalog ved å bruke kommandolinjeargumenter

    Som et alternativ til å lese input interaktivt, støtter de fleste Linux-kommandoer argumenter. Du kan gi et argument når du kjører et program for å kontrollere oppførselen.

    I skriptet ditt kan du bruke $1 for å referere til en spesiell variabel som inneholder verdien til det første argumentet. $2 vil referere til det andre argumentet, og så videre.

      Hvordan endre DNS-servere for raskere surfing i Linux, Windows og Mac?
  • Lag en katalog ved å bruke mkdir-kommandoen fra forrige eksempel. Men denne gangen bruker du den innebygde variabelen $1:
     #!/bin/bash
    mkdir $1
  • Kjør skriptet, denne gangen sender du det valgte navnet på en ny katalog som et argument:
     ./arg_dir.sh Test 
  • Du lurer kanskje på hva som skjer hvis du kjører skriptet uten å oppgi et argument i det hele tatt. Prøv det og se; du skal motta en feilmelding som starter «bruk: mkdir»:

    Uten noen kommandolinjeargumenter vil verdien av $1 være tom. Når skriptet ditt kaller mkdir, vil det ikke sende et argument til det, og mkdir-kommandoen vil returnere den feilen. For å unngå dette kan du se etter tilstanden selv og presentere en mer vennligsinnet feil:

  • Som alltid, begynn med shebang-linjen:
     #!/bin/bash 
  • Før du kaller mkdir, se etter et tomt første argument (dvs. ingen argumenter). Du kan gjøre dette ved å bruke Bashs if-setning som kjører kode basert på en betingelse:
     if ["$1" = ""]; then 
  • Hvis det første argumentet er tomt, skriv ut en feil og avslutt skriptet:
         echo "Please provide a new directory name as the first argument"
        exit
  • Det litt merkelige «fi»-nøkkelordet («if» reversert) signaliserer slutten på en if-setning i Bash:
     fi 
  • Skriptet ditt kan nå fortsette som før, for å håndtere saken når et argument er tilstede:
     mkdir $1 
  • Når du kjører denne nye versjonen av skriptet, får du en melding hvis du glemmer å inkludere et argument:

      Hvordan sette prosessprioriteter med nice og renice på Linux

    4. Slett en fil ved hjelp av en bash-funksjon

    Hvis du finner deg selv å gjenta den samme koden, bør du vurdere å pakke den inn i en funksjon. Du kan da ringe den funksjonen når du trenger det.

    Her er et eksempel på en funksjon som sletter en gitt fil.

  • Start med shebang-linjen:
     #!/bin/bash 
  • Definer en funksjon ved å skrive navnet etterfulgt av tomme parenteser og kommandoer innenfor krøllede parenteser:
     del_file() {
        echo "deleting $1"
        rm $1
    }

    Du kan deretter kalle funksjonen og gi den navnet på en fil som skal slettes:

     del_file test.txt 

  • Når du kaller en funksjon, vil den sette den spesielle $? verdi med utgangsstatusen til den siste kommandoen den kjører. Utgangsstatusen er nyttig for feilkontroll; i dette eksemplet kan du teste om rm-kommandoen lyktes:

     if [ $? -ne 0 ]; then
        echo "Sorry, could not delete the file"
    fi

    5. Lag en grunnleggende kalkulator for aritmetiske beregninger

    Dette siste eksemplet demonstrerer en veldig enkel kalkulator. Når du kjører den, skriver du inn to verdier, og velger deretter en aritmetisk operasjon å utføre på dem.

    Her er koden for calc.sh:

     #!/bin/bash


    echo "Enter first number: "
    read a

    echo "Enter second number: "
    read b


    echo "Enter Arithmetic Operation Choice :"
    echo "1. Addition"
    echo "2. Subtraction"
    echo "3. Multiplication"
    echo "4. Division"
    read choice


    case $choice in
      1)
     result=`echo $a + $b | bc`
      ;;

      2)
     result=`echo $a - $b | bc`
     ;;

      3)
     result=`echo $a \* $b | bc`
      ;;

      4)
     result=`echo "scale=2; $a / $b" | bc`
      ;;
    esac

    echo "Result: $result"

    Legg merke til bruken av kasus … esac som er Bashs ekvivalent av switch-setningen fra andre språk. Den lar deg teste en verdi – i dette tilfellet valgvariabelen – mot flere faste verdier og kjøre tilhørende kode.

    Dette skriptet bruker bc-kommandoen til å utføre hver beregning.