Questa guida e' applicabile anche ad Android in quanto integra diversi binari, accessibili sia tramite script che tramite input diretto da ADB oppure dall'emulatore del terminale sul telefono.
Questa e' solo una infarinata generale sull'argomento, la sintassi utilizzata e gli statement piu' comuni.
Questa guida potrebbe esservi utile per automatizzare qualche comando quando usate adb o fastboot e ridurre le digitazioni
Tutto quello che elenchero' qui di seguito e' applicabile, sia tramite comando diretto nella shell, sia tramite script, ossia un file con estensione .sh che contiene tutti i comandi che la shell dovrà eseguire in modo lineare ( ossia da sinistra a destra, dall'alto al basso eccezion fatta per le funzioni, che vedremo dopo)
quindi cominciamo:
impostazione del file:
Cap 1 : VARIABILIla prima riga del nostro script dovrà SEMPRE avere la dicitura seguente:
questa riga serve per indicare alla shell ( aka terminale) quale delle shell disponibili e quale sintassi andremo ad usarecodice:#!/bin/bash oppure #!/bin/sh
le righe seguenti a questa conterranno i comandi, gli statement , ed eventuali commenti.
Arrays:le variabili vendono utilizzate per impostare un valore fisso oppure memorizzare l'output di un comando.
Attenzione pero', se 2 variabili possiedono lo stesso nome, quando verra' eseguita la seconda variabile , verra' sovrascritta la prima, e' quindi opportuno dare nomi diversi alle variabili in modo da non creare confusione ( a meno che non si voglia sovrascrivere il contenuto della variabile precedente ovviamente!)
Esempi:
variabile preimpostata:
variabile determinata dall'output di un comando:codice:VAR="ciao"
va sottolineato che le variabili non vengono visualizzate direttamente nell'output della shell ma vanno richiamate!!codice:VAR=`echo "ciao"`
per gli esempi sopra citati e' molto semplice, ed e' ovviamente applicabile a tutti i passi successivi che faremo.
ecco come:
in questo modo noi diremo alla shell di visualizzare nell'output la variabile.codice:echo $VAR
le variabili possono avere qualsiasi nome vogliate ( VAR, LOL, ASD; ABCD, XYZ) purchè siano seguite dal simbolo "=" e il contenuto della variabile deve essere incluso fra i simboli :
apostrofo '........'
virgolette "......."
accento `.........`
IF statement:sono vettori ( vedi definizione matematica di vettore) oppure matrici ( in caso di array multidimensionali)
dopo questo comando potremo inserire i singoli valori per la lista come segie:codice:declare -a array
una volta dichiarata la lista potremo richiamare i singoli elementi, tutti gli elementi oppure il numero di elementi nella lista nel modo seguente:codice:array[0]="ciao" array[1]="si" array[2]="no" array[3]="boh" array[4]="asdlalla"
richiama un valore specifico:
richiama tutti i valori:codice:echo ${array[3]}
visualizza quanti sono i valori nella listacodice:echo ${array[@]}
gli arrays sono utili spesso e volentieri nei loop ( di seguito)codice:echo ${#array[@]}
questo statement viene utilizzato per eseguire comandi in base a determinate condizioni e la sintassi e la seguente:
italianizzando la sintassi avremmo qualcosa del genere:codice:if [condizione]; then <<<<<esegue alcuni comandi>>>>> else <<<< esegue altri comandi >>>>>> fi
per la condizione esistono diverse opzioni e sono ( i piu' usati):codice:SE [condizione verificata] ; ALLORA <<<< esegue alcuni comandi >>>>>> ALTRIMENTI <<<< esegue questi altri comandi >>>> fi ( chiusura della condizione )
= a uguale b ( corrisponde anche a ==) -e la condizione esiste ( o il file esiste) != a diverso da b -le "less equal" ossia inferiore o uguale -gt "greater than" ossia maggiore di (a maggiore di b ) -eq a uguale b
Esempio:
provate a cambiare il valore di VAR per avere i diversi risultaticodice:VAR="5" if [ $VAR -eq 5 ] ; then echo $VAR else echo " VAR non e' uguale a 5" fi
oppure
oppurecodice:VAR="10" if [ $VAR -le 10 ] ; then echo "la variabile e' inferiore o uguale a 10" else echo "la variabile e' maggiore di 10" fi
codice:VAR="ciao" if [ "$VAR" == "ciao" ] ; then echo "uguali" else echo "diversi" fi
Loop statements:
i loop sono funzioni che vengono ripetute fino a che la condizione non risulta verificata oppure fino a che l'utente non la interrompe.
esistono 2 tipi di loop: while e for.
while loop:
il loop con while viene utilizzato fino a che una condizione non e' verificata, quindi:
il loop continuera' fino a quando "x" non sara' uguale a 5, come? analizziamo la sintassicodice:x=1 while [ $x -le 5 ] do echo "ciao $x volte" x=$(( $x + 1 )) done
while [ $x -le 5 ]
do
traducendo e': MENTRE [$x e' inferiore o uguale a 5] esegui
echo "ciao $x volte"
x=$(( $x + 1 ))
"echo" non fa altro che visualizzare un messaggio
"x=$(( $x + 1 ))" = si occupa di incrementare "x" di uno ad ogni giro fino a che non sara' uguale a 5
va sottolineato che all'ultimo giro del loop, ossia quando X sara' uguale a 5, verra' comunque effettuata la somma di 1 a x, quindi x alla fine sara' 6 , ma non verra' visualizzato perche' il loop abbiamo deciso di fermarlo a 5 ( e in qualsiasi caso, se lo fermassimo a 6, x sarebbe 7 e via dicendo)
la sintassi per le condizioni di while e' la stessa che viene utilizzata per IF ( vedi sopra)
il loop con while puo' anche essere interrotto da un IF statement, ad esempio:
codice:while [ condizione ] do statement1 #esegui fino a che la condizione e' vera oppure fino a quando non si arriva alla condizione di break statement2 if [condizione di break] then break #esce dal loop fi statements3 #intanto che la condizione e' vera e non si e' verificata la condizione di break done
For loop:
il loop con for e' molto simile al loop con while m viene utilizzato, ad esempio per gli array, ed e' molto semplice da capire:
oppurecodice:declare -a array array[0]="ciao" array[1]="si" array[2]="no" array[3]="boh" array[4]="asdlalla" for i in ${array[@]} do echo $i done
in questo caso non leggera' i valori da un array ma leggera' i lavori da noi impostati "1 2 3 4 5" e ad ogni giro visualizzera' il valore letto.codice:for i in 1 2 3 4 5 do echo $i done
condizione tripla:
in questo caso "for" si occupera' di fare la conta da 0 a 10 e poi si fermera' poiche' noi gli abbiamo detto:codice:for ((VAR=0; VAR<=10; VAR++)) do echo $VAR done
VAR=0, ossia impostiamo VAR a zero inizialmente
VAR<=10, ossia diciamo a "for" di fermarsi con la conta a 10
VAR++, ossia diciamo a "for" di incrementare di una unita' VAR ad ogni giro
Case statement:
per ora direi che vi ho infarinato abbastanza ma appena possibile cerchero' di aggiornarla e aggiungere altre spiegazioni!personalmente lo uso per creare script interattivi, quindi, in base all'input lo script esegue uno o una serie di comandi prestabiliti.
Esempio pratico:
ovviamente potete inserire infinite opzioni , non solo 3codice:echo "scelte disponibili" echo "1 - ciao" echo "2 - buona sera" echo "3 - buona giornata" echo -n "digita un numero [ 1 - 3 ] : " read choice case $choice in 1) echo "hai scelto 1, CIAO" ;; 2) echo "hai scelto 2, BUONA SERA" ;; 3) echo "hai scelto 3, BUONA GIORNATA" esac
spiegazione dell'esempio:
echo -n ---> visualizza un messaggio e attende l'input dell'utente
read choice ---> legge l'input dell'utente e lo importa in una variabile
legge la variabile $choice ed esegue il o i comandi elencati nel rispettivo paragrafocodice:case $choice in 1) ;; 2) ;; 3) esac
ricordatevi sempre che la shell stessa ha una funzione importante, ossia "man".
Escludendo gli statement e la sintassi, per qualsiasi altro binario, come ad esempio "cat" o "ls" o "sed" , per ottenere informazioni dettagliate sull'utilizzo, vi bastera' digitare
ad esempio man lscodice:man <binario>
divertitevi!![]()