#!/bin/bash # ESEMPIO DI SCRIPT DI SHELL PER ESEGUIRE TEST #--------------------------------------------- # # Lo script lancia l'esecuzione di alcuni programmi. # # Per eseguirlo, occorre abilitare il permesso di esecuzione del file testNumeri: # # chmod +x testNumeri # # Quindi dare il comando # # testNumeri # # oppure, se la dirctory corrente (.) non e' in PATH: # # # ./testNumeri # # # # ALCUNI RICHIAMI SU LINGUAGGIO DI SHELL # -------------------------------------- # # # 1) L'istruzione # # prog=S3ToInt # # assegna alla variabile prog il valore S3ToInt. # Diversamente da Java, le variabili non hanno tipo e non e' richiesta la definizione. # # # 2) Per denotare il contenuto della variabile prog occorre scrivere # # $prog # # # 3) La sintassi dell'istruzione IF-THEN-ELSE e': # # # if # then # # else # # fi # # Viene eseguita # # - se ha successo, vengono eseguite # - altrimenti viene eseguita # # Nel nostro caso, e' # # [ -f $prog.class ] # # equivalente a # # test -f $prog.class # # # che ha successo se e solo se il file $prog.class esiste. # Ad esempio, se il valore di prog e' S3ToInt, viene controllata l'esistenza del file S3ToInt.class. # # In termini piu' precisi: # - un comando ha successo se restituisce alla shell il valore 0, # - un comando non ha successo se restituisce un valore diverso da 0. # # Il valore restituito da un comando (che e' una cosa diversa dall'ouput stampato dal programma!) # viene assegnato alla variabile speciale di shell chiamata '?'. # # Provare a dare i comandi # # date # echo $? // codice restituito dal comando precedente # # test -f testNumeri // oppure, test -f di un file che esiste # echo $? # # test -f fileCheNonEsiste # echo $? # # # separatore="---------------------------------" # TEST PER S3ToInt prog=S3ToInt # alla variabile prog e' assegnato il valore S3ToInt if [ -f $prog.class ] # controlla esistenza del file $prog.class (in questo caso, il file S3ToInt.class) then echo TEST PER $prog java $prog d--d # EQUIVALE A: java S3ToInt d--d java $prog IIdd--d java $prog dddd- java $prog dIIId java $prog Id-IIddd- else echo $prog.class: non definito fi echo $separatore # TEST PER IntToS3 prog=IntToS3 if [ -f $prog.class ] then echo TEST PER $prog java $prog 27 java $prog 185 java $prog 235 java $prog 135 java $prog 27001 else echo $prog.class: non definito fi echo $separatore # TEST PER NumToInt prog=NumToInt if [ -f $prog.class ] then echo TEST PER $prog java $prog 12345 8 java $prog A45F4 16 java $prog 10001 2 java $prog 75417 8 java $prog AB7BA 13 java $prog 1654323 7 else echo $prog.class: non definito fi echo $separatore # TEST PER IntToNum prog=IntToNum if [ -f $prog.class ] then echo TEST PER $prog java $prog 12234 8 java $prog 345 2 java $prog 345 7 java $prog 3235 16 java $prog 237876 13 java $prog 2345 5 java $prog 764848 16 java $prog 37814 14 else echo $prog.class: non definito fi