Linuxtrent: Re: script

  • From: Matteo Ianeselli <ianezz@xxxxxxxxxx>
  • To: linuxtrent@xxxxxxxxxxxxxxxxx
  • Date: Fri, 20 Apr 2001 19:18:00 +0200

Filippo Dal Bosco writes:

 > if grep quitting /home/f/opus/binkd.trc && [ -e 
 > /home/f/opus/quitting.p_souper ]; then
 >     killall binkd
 >     killall wvdial
 > fi

Questo mi sembra a posto.

 > if ! ps -a|grep wvdial && [ -e /home/f/opus/quitting.souper ]; then
 > killall binkd
 > killall wvdial
 > fi

Questo non mi pare:

1) Se non mi sbaglio, il `!' ha significato solo come parametro del
   comando "test" (o del suo alias `['), ma non funziona da solo in
   una if. Quindi, se hai bisogno di testare se l'esecuzione di un
   comando non e` andata a buon fine credo sia proprio necessario fare
   una cosa del tipo

   if comando ...; then
       # Faccio nulla...
       echo > /dev/null
   else
       comando
       comando
       ...
   fi

   Peraltro, in virtu` della short-circuit evalutation degli operatori
   && e ||, potresti anche scrivere

   ( (ps -a|grep wvdial) && [ -e /home/f/opus/quitting.souper ] ) || \
       (killall binkd; killall wvdial)

   per il solito fatto che occorre valutare ambedue gli operandi in un
   OR solo se il primo e` falso, e ambedue gli operandi di un && solo
   se il primo e` vero.

2) La pipe mi pare abbia priorita` maggiore rispetto a &&, per cui
   salta fuori un comando del tipo

   ps -a | (grep wvdial && [ -e /home/f/opus/quitting.souper ] )

   invece di

   (ps -a | grep wvdial) && [ -e /home/f/opus/quitting.souper ]

   Ma in realta` mi pare che nel tuo caso diano lo stesso risultato.

3) ``grep'' spara sia su standard outuput che su standard error, per
   cui un bel ``2>&1 >/dev/null'' secondo me non guasta.

   ``2>&1'' dice che standard error deve confluire su standard output,
   e ``>/dev/null'' dice che standard output deve finire su /dev/null,
   
-- 
UNIX diapers by Pannolini USPTO 2039887  http://www.uspto.gov
Matteo Ianeselli      ianezz AT sodalia.it  (+39) 0461 316452
Visita il LinuxTrent:            http://linuxtrent.grinta.net
-- 
Per iscriversi  (o disiscriversi), basta spedire un  messaggio con SOGGETTO
"subscribe" (o "unsubscribe") a mailto:linuxtrent-request@xxxxxxxxxxxxxxxxx


Other related posts:

  • » Linuxtrent: Re: script