|
Seconda parte Questo mini-tutorial programmazione in Bash, dove impariamo a usare Ciclos e altri strumenti che ci aiuteranno a migliorare le funzionalità del nostro script. |
Il condizionale If
La funzione di If è applicare un filtro ed eseguire un'operazione o un'attività per ogni tipo di filtro applicato. La sua struttura è la seguente:
Se [condizione]; quindi comandi elif [condizione]; poi altri comandi; comandi fi
Un esempio è mostrato accanto al ciclo For nella rispettiva sezione.
Ciclos
1. While: eseguirà tutti i comandi specificati tra do e done fintanto che la condizione è vera. Se vogliamo passargli operatori di confronto, l'espressione deve essere tra parentesi.
mentre CONDITION / COMMAND esegue i comandi eseguiti
Esempio: tabella di moltiplicazione di un numero
#! / bin / bash X = 1 echo "Inserisci un numero e premi INVIO" leggi M # Il ciclo controlla che X sia minore o uguale a 10 mentre [$ X –le 10] do #In R memorizziamo la moltiplicazione di X per MR = $ [X * M] #Questa moltiplicazione è stampata sullo schermo echo "$ M * $ X = $ R" #Con let, aumentiamo il valore di X di 1 unità let X = $ X + 1 fatto
2. For: memorizza un elenco di elementi in una variabile, che verrà utilizzato per eseguire determinate operazioni con ogni ciclo.
per VARIABILE in ELEMENTI esegue i comandi
Esempio: programma che copia un file da una cartella all'altra, sostituendo un vecchio file.
# / bin / bash # Stabiliamo le directory di origine e di destinazione ORIGIN = / home / user / Downloads DESTINATION = / home / user / Documents # Ci posizioniamo nel cd di origine $ ORIGIN # Di tutti i file, vogliamo solo quello che è # chiama FILE per FILE in * do ARCH-DESTINATION = "$ DESTINATION / $ FILE" # -f ci filtra i file regolari, poiché le directory non sono #nulla di buono per noi. –Nt filtra # file "più recenti" di quelli # trovati nella cartella di destinazione se [-f $ FILE] && [$ FILE –nt $ ARCH-DESTINATION]; poi echo "Copia $ FILE ..." # copia il file con cp cp $ FILE $ ARCH-DESTINATION fi fatto #Cd per uscire dalla cartella sorgente cd
Un altro esempio: script in cui l'utente deve indovinare un numero casuale generato dal computer.
# / bin / bash # Viene generato un numero casuale da 1 a 10, viene # salvato in RANDOM RANDOM = $ [$ RANDOM% 10 + 1] mentre [1] do echo –n "Inserisci un numero:" leggi NUM # Confronta se il numero scelto dall'utente è #equal to RANDOM; ricordarsi di usare $ per valutare i #valori delle variabili e non i loro nomi se [“$ NUM –eq“ $ RANDOM ”]; poi fai eco "Hai capito bene!" #break permette di terminare il ciclo mentre break #Se il numero è minore di RANDOM elif [“$ NUM –gt“ $ RANDOM ”]; then echo "È minore" "In caso contrario, è maggiore di RANDOM else echo" È maggiore "fi done
3. Until: struttura abbastanza simile a While, tranne per il fatto che il codice viene sempre eseguito mentre la valutazione della condizione è negativa, ovvero il programma continua a essere eseguito "fino a quando non si verifica la condizione"
finché CONDITION / COMMAND non esegue i comandi
Esempio: stampa i numeri 10-20 in ordine decrescente
#! / bin / bash CONT = 20 # Fintanto che il contatore è minore di 10 (-lt, "inferiore #than") il codice viene eseguito fino a [$ CONT -lt 10]; do echo "COUNTER $ CONT" #A CONT viene sottratto da un'unità lasciando che CONT- = 1 sia fatto
4. Seleziona: questo ultimo ciclo è un caso speciale, poiché generalmente viene utilizzato per realizzare menu velocemente. Funziona in modo simile al ciclo For.
selezionare VARIABILE in LISTA dei comandi eseguiti
Esempio: dare all'utente la possibilità di continuare o terminare lo script.
#! / bin / bash #item è una variabile che risponde a ciò che #utente sceglie, Continua e Fine sono le # opzioni disponibili per lui, sebbene sia possibile aggiungere altre opzioni # altro seleziona l'elemento in Continua Fine fare #Se l'utente sceglie Termina il programma, poi con pausa usciamo dal ciclo. se [$ elemento = "Fine"]; quindi rompere fi fatto