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