5 esempi di script Bash per aiutarti a imparare la programmazione Linux

Lo scripting Bash è uno dei modi più popolari e accessibili per programmare il tuo computer Linux. Questi semplici esempi di script ti aiuteranno a comprendere il processo e ti introdurranno alle basi della programmazione Bash.

1. Come stampare Hello World in Bash

L’esempio Hello World è un ottimo modo per apprendere qualsiasi linguaggio di programmazione e Bash non fa eccezione.

Ecco come stampare “Hello World” usando Bash:

  • Apri un editor di testo e inizia a modificare un nuovo file contenente le seguenti righe di codice.
  • La prima riga dei tuoi script Bash dovrebbe sempre assomigliare a questa:
     #!/bin/bash 

    Il comando Shebang (#!/bin/bash) è essenziale poiché la shell lo utilizza per decidere come eseguire lo script. In questo caso utilizza l’interprete Bash.

  • Qualsiasi riga che inizia con il simbolo # è un commento. La riga Shebang è un caso speciale, ma puoi utilizzare i tuoi commenti per spiegare il tuo codice. Aggiungi un commento alla riga 2, ad esempio:
      
  • È possibile stampare sullo standard output utilizzando il comando echo, seguito dal valore che si desidera stampare. Aggiungere quanto segue alla riga 3:
     echo "Hello World" 
  • Salva lo script, preferibilmente con estensione .sh, ad esempio hello_world.sh. La proroga non è un obbligo, ma è una convenzione a cui è utile attenersi.
  • Per eseguire lo script, rendi il file eseguibile. Utilizza il comando chmod (“cambia modalità”) insieme all’argomento +x (“eseguibile”) e al nome dello script di shell:
     chmod +x hello_world.sh 
  • Utilizza questo comando per eseguire lo script dalla sua directory:
     ./hello_world.sh 
  • Quando lo script viene eseguito, stamperà il testo “Hello World” sul tuo terminale:
  • 2. Creare una directory leggendo l’input

    Dai tuoi script, puoi eseguire qualsiasi programma che potresti normalmente eseguire sulla riga di comando. Ad esempio, puoi creare una nuova directory dal tuo script utilizzando il comando mkdir.

  • Inizia con la stessa frase di prima:
     #!/bin/bash 
  • Richiedi all’utente un nome di directory, utilizzando il comando echo come prima:
     echo "Enter new directory name:" 
  • Utilizza il comando di lettura integrato per recuperare l’input dell’utente. Il singolo argomento nomina una variabile in cui la shell memorizzerà l’input:
     read newdir 
  • Quando è necessario utilizzare il valore memorizzato in una variabile, anteporre al suo nome il simbolo del dollaro ($). Puoi passare il contenuto della variabile di input come argomento al comando mkdir, per creare una nuova directory:
     mkdir $newdir 
  • Quando esegui questo script, ti verrà richiesto un input. Inserisci un nome di directory valido e vedrai che lo script lo crea nella tua directory corrente:
  • 3. Creare una directory utilizzando gli argomenti della riga di comando

    In alternativa alla lettura interattiva dell’input, la maggior parte dei comandi Linux supporta gli argomenti. Puoi fornire un argomento quando esegui un programma, per controllarne il comportamento.

    All’interno del tuo script, puoi utilizzare $1 per fare riferimento a una variabile speciale che contiene il valore del primo argomento. $2 si riferirà al secondo argomento e così via.

  • Crea una directory utilizzando il comando mkdir dell’esempio precedente. Tuttavia, questa volta, utilizza la variabile integrata $1:
     #!/bin/bash
    mkdir $1
  • Esegui lo script, questa volta passando il nome scelto di una nuova directory come argomento:
     ./arg_dir.sh Test 
  • Forse ti starai chiedendo cosa succede se esegui lo script senza fornire alcun argomento. Provalo e vedi; dovresti ricevere un messaggio di errore che inizia “usage: mkdir”:

    Senza argomenti della riga di comando, il valore di $1 sarà vuoto. Quando il tuo script chiama mkdir, non gli passerà un argomento e il comando mkdir restituirà quell’errore. Per evitare ciò, puoi verificare tu stesso la condizione e presentare un errore più amichevole:

  • Come sempre, inizia con la frase shebang:
     #!/bin/bash 
  • Prima di chiamare mkdir, controlla che il primo argomento sia vuoto (cioè senza argomenti). Puoi farlo usando l’istruzione if di Bash che esegue il codice in base a una condizione:
     if ["$1" = ""]; then 
  • Se il primo argomento è vuoto, stampa un errore ed esci dallo script:
         echo "Please provide a new directory name as the first argument"
        exit
  • La parola chiave “fi” un po’ strana (“if” invertita) segnala la fine di un’istruzione if in Bash:
     fi 
  • Il tuo script ora può continuare come prima, per gestire il caso in cui è presente un argomento:
     mkdir $1 
  • Quando esegui questa nuova versione dello script, riceverai un messaggio se dimentichi di includere un argomento:

    4. Elimina un file utilizzando una funzione Bash

    Se ti ritrovi a ripetere lo stesso codice, considera di racchiuderlo in una funzione. Puoi quindi chiamare quella funzione ogni volta che ne hai bisogno.

    Ecco un esempio di una funzione che elimina un determinato file.

  • Inizia con la frase shebang:
     #!/bin/bash 
  • Definisci una funzione scrivendo il suo nome seguito da parentesi vuote e comandi all’interno di parentesi graffe:
     del_file() {
        echo "deleting $1"
        rm $1
    }

    Puoi quindi chiamare la funzione e passarle il nome di un file da eliminare:

     del_file test.txt 

  • Quando chiami una funzione, imposterà lo speciale $? valore con lo stato di uscita dell’ultimo comando eseguito. Lo stato di uscita è utile per il controllo degli errori; in questo esempio, puoi verificare se il comando rm ha avuto esito positivo:

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

    5. Creare una calcolatrice di base per i calcoli aritmetici

    Questo esempio finale dimostra una calcolatrice molto semplice. Quando lo esegui, inserirai due valori, quindi sceglierai un’operazione aritmetica da eseguire su di essi.

    Ecco il codice per 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"

    Notare l’uso di case … esac che è l’equivalente di Bash dell’istruzione switch di altri linguaggi. Ti consente di testare un valore, in questo caso la variabile choice, rispetto a diversi valori fissi ed eseguire il codice associato.

    Questo script utilizza il comando bc per eseguire ogni calcolo.