PDA

View Full Version : verificare l'esistenza di un file in Bash Scripting


Maestro
09-06-2004, 14:21
Ciao a tutti, per uno script (in bash scripting) che devo fare mi servirebbe sapere come posso verificare se un file che specifico esiste o meno.. infatti lo script dovrebbe agire in modo diverso se un file esiste o meno.. ho trovato vari esempi di if usando anche il for ma niente che fa al caso mio..

Ho visto anche l'esistenza di test -r ( [ ) ma non so come poter usarlo insieme a if..


Grazie a tutti sin da ora.. :)


Ciao

kingv
09-06-2004, 14:35
if [ -e nome_file ]
then
#.....

Maestro
09-06-2004, 14:58
grazie mille provo subito ;)

ciao

figulus
09-06-2004, 19:49
Nel caso non l'avessi ancora fatto ti consiglio di leggere la pagina di manuale di bash... ;)

Maestro
12-06-2004, 20:55
grazie del suggerimento figulus, ho letto buona parte del manuale di Bash Scripting... pero' ora sorge un altro problema.. come posso verificare se un dato che prendo con il read e' nullo, cioe' vuoto? Classico esempio del premere invio..

#!/bin/sh
echo scrivimi qualcosa

read qualcosa

if [ $qualcosa = " " ] o qualcosa del genere
then
echo non mi hai detto niente
else
echo bravo
fi

inoltre in caso che una condizione non sia soddisfata posso fare una specie di "goto 1" per ritornare a richiedere senza riscrivere tutto?


grazie mille

ciao

p.s.: per il primo problema ho provato anche ad usare -s ma niente , il file non ha mai valore 0 bytes anche se vuoto :(

sbomberino
13-06-2004, 10:38
ciao per verificare se il file esiste o meno nella if lo controlli con -f

if [ -f $nome_file] ; then
blablabla
fi

per fare quello che dici con il controllo del testo immesso con richiesta fino a che non viene immesso come vuoi tu :

tasto = ""

while [ $tasto != "" ]
do
read tasto
if [ $tasto = "" ] ; then
echo "non hai scritto niente"
fi
done

Maestro
13-06-2004, 11:51
grazie mille sbomberino , pero' mi da un errore:


./a.sh: line 4: [: !=: unary operator expected


il codice usato e':


echo tasto ?

while [ $tasto != "" ]
do
read tasto
if [ $tasto = "" ] ; then
echo "non hai scritto niente"
fi
done


Sai dirmi dove ho sbagliato?

Grazie ancora

sbomberino
13-06-2004, 12:18
prova con i doppi apici

while [ "$tasto" != "" ]

;)

al limite ad inizio script
#!/bin/ksh

Ciao