El día Thursday, December 23, 2010 a las 10:51:24AM -0500, KZKG^Gaara 
escribió:

> El 23/12/10 10:39, Matthias Apitz escribió:
> > Lo entiendes mal (hasta fatal). Con || hace justamente lo contrario: sólo si
> > la primera orden falla, ejecuta la segunda.
> >
> > Lo correcto para tu caso, y lo más simple y entendible es
> >
> > cp -R /1/ /home/2/&&  rm -R /1/
> >
> > Cada uno que lo lea, entiende de primera vista que pasará :-)
> >
> >     matthias
> Ok, entonces era lo contrario.

Sí, era lo contrario. Pero, esto no importa, ¿no? :-)
Ojo, lo "contrario" puede significar perder todos los ficheros.

> Lo que Willians y tú me comentan resuelve mi problema, gracias por tan 
> pronta respuesta.
> Ahora, mi duda también es: si no se puede lograr mediante un ciclo 
> condicional?
> Sé que ya con && se resuelve, pero me gustaría lograr algo como:
> 
> if cp=false
> then execute send_email.sh
> else
> rm -R /1/
> .....
> ......
> .......
> etc.
> 
> O sea, si cp dá algún error (devuelve false, null, 0, o algo así no 
> conozco el método) entonces que haga X proceso, si devuelve true (o sea, 
> que no dé error) entonces que siga con todo el script.

Lo más claro para tal caso, según mi opinión, sería:

cp -R /1/ /home/2/ || {
    send_mail.sh
    llamarAlAdmin.sh
    ...
    printf "Panico: CP ha fallado -- exit\n"
    exit 1
    }
rm -R /1/
...

        matthias

-- 
Matthias Apitz
t +49-89-61308 351 - f +49-89-61308 399 - m +49-170-4527211
e <g...@unixarea.de> - w http://www.unixarea.de/

______________________________________________________________________
Lista de correos del Grupo de Usuarios de Tecnologías Libres de Cuba.
Gutl-l@jovenclub.cu
https://listas.jovenclub.cu/cgi-bin/mailman/listinfo/gutl-l

Responder a