#!/bin/bash # $1 nome comando, deve essere ls | rm | touch # $2 = nome file # $3 = facoltativo, numero 1-9 # $# = n. di argomenti function waitfile() { if test $# -ge 2 ; then #controllo se ci sono gli argomenti obbligatori if test $1 = ls -o $1 = rm -o $1 = touch ; then #controllo se comando valido case "$3" in #controllo valore terzo argomento force) $1 $2 ; exit 0 ;; #esecuzione immediata e uscita, come valuto risultato comando? [1-9]) N="$3" ;; *) N=10;; esac while [ "$N" -gt 0 ] ; do #ciclo sul valore di N if test -a "$2" ; then #controllo se file esiste $1 $2 ; exit 0 ; #esecuzione e uscita, come valuto risultato comando? else echo "file $2 "'non esiste, wait 1 sec...'; sleep 1; #attesa fi let N--; done #fine ciclo echo 'timeout'; exit 3 #uscita per timeout else echo "$1" ' is not a valid command, use ls or rm or touch' ; exit 2 #uscita per comando non valido fi else echo 'missing mandatory arguments. usage: waitfile <ls|rm|touch> filename [force|N]' ; exit 1 #uscita per mancanza di argomenti fi } waitfile "$1" "$2" "$3"