Newsgroup: it.comp.os.linux.iniziare
Titolo: script: [ condizione] && multipli

Scusate il titolo criptico.
Se ho ben capito quello che mi avete insegnato,
[ ! -f file_inesistente ] && echo eureka && echo eureka
stampa eureka su due righe se file_inesistente non esiste.
Mi domandavo se, sempre amesso che file_inesistente non esista,
[ ! -f file_inesistente ] && mv a b && mv c d
rinomina c in d anche se a non esiste o non può essere rinominato a b.
Cioè, in generale, se un comando non va a buon fine il successivo dopo 
&& viene eseguito comunque? Se volessi forzare l'esecuzione di tutti i 
comandi a prescindere dall'esito dei precedenti, come dovrei fare?
Grazie.

 comunque?
[...]
&& = LOGICA AND (se il primo ha esito positivo, anche il secondo viene 
eseguito)
 
|| LOGICA OR (se il primo fallisce, viene eseguito il secondo)
 
; (usato come separatore tra due o più comandi sulla stessa linea, li 
esegue tutti indifferentemente dal loro stato di output)
 
quello che a te serve è:
 
- leggere gli appunti d'informatica libera
 
- imparare che in un caso come il tuo, esistono i costrutti 
IF...THEN...ELSE
 
IF (comando fallisce)
THEN (esegui secondo)
ELSE (fai altro)
fi
 
-- 
Puppy Linux wiki:  
http://dokupuppylinux.tk
 
Puppy Linux Forum: 
http://www.italianpuppy.org/
 
Windows me genuit, Ubuntu rapuere / tenet nunc Puppy Linux...
invito dropbox 2GB free - 
http://db.tt/Vc6IeN4
 

 Grazie.
 
&& esegue se il comando precedente esce con successo (exitcode 0)
|| esegue se il comando precedente esce con errore (exitcode non 0)
; esegue indipendentemente dal comando precedente
 
 

 comandi a prescindere dall'esito dei precedenti, come dovrei fare?
 
Invece di "&&", dovresti usare ";".
 
man bash
/Lists [INVIO]
 
-- 
Bye, Lem
Ceterum censeo ISLAM esse delendum
_________________________________________________________________
Non sprecare i cicli idle della tua CPU, né quelli della tua GPU.
 
http://www.worldcommunitygrid.org/index.jsp
 
http://www.rnaworld.de/rnaworld/
 
http://dnahome.cs.rpi.edu/dna/
 
 
http://www.gpugrid.net/
 

Addi' 03 gen 2012, Savux scrive:

Stai facendo confusione.
 
Questo esegue comando1 comando2... solo se esiste il file FILE, 
altrimenti, se invece non esiste, non fa niente:
if [ -f FILE ]; then
comando1
comando2
...
fi
(seguito dello script)
 
Questo esegue comando1 comando2... solo se NON esiste il file FILE, 
altrimenti, se invece esiste, non fa niente:
if [ ! -f FILE ]; then
comando1
comando2
...
fi
(seguito dello script)
 
Questo esegue comando1 comando2... se esiste il file FILE e poi 
prosegue ad eseguire lo script DOPO il fi; mentre invece se non esiste
il file FILE salta comando1 comando2... ed esegue comando3 comando4 ... 
e poi continua dopo il fi: 
if [ -f FILE ]; then
comando1
comando2
...
else
comando3
comando4
...
fi
(seguito dello script)
 
Questo esegue comando1 comando2... se NON esiste il file FILE e poi 
prosegue ad eseguire lo script DOPO il fi; mentre invece se esiste il 
file FILE salta comando1 comando2... ed esegue comando3 comando4 ... e 
poi continua dopo il fi:
if [ ! -f FILE ]; then
comando1
comando2
...
else
comando3
comando4
...
fi
(seguito dello script)
 
 
Guardati anche "man test" e "help test" e "halp if".
 
-- 
Tanti saluti