11.04.2013 Views

Guida avanzata di scripting Bash - Portale Posta DMI

Guida avanzata di scripting Bash - Portale Posta DMI

Guida avanzata di scripting Bash - Portale Posta DMI

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Capitolo 12. Filtri, programmi e coman<strong>di</strong> esterni<br />

# Si tratta <strong>di</strong> uno script veramente pericoloso.<br />

# Eseguirlo <strong>di</strong>strattamente (specialmente da root)<br />

#+ può causare per<strong>di</strong>ta <strong>di</strong> dati ed altri effetti indesiderati.<br />

E_NOARG=66<br />

if test -z "$1" # Nessun argomento fornito da riga <strong>di</strong> comando?<br />

then<br />

echo "Utilizzo: ‘basename $0‘ Processo(i)_da_terminare"<br />

exit $E_NOARG<br />

fi<br />

NOME_PROCESSO="$1"<br />

ps ax | grep "$NOME_PROCESSO" | awk ’{print $1}’ | xargs -i kill {} 2&>/dev/null<br />

# ^^ ^^<br />

# --------------------------------------------------------------------<br />

# Note:<br />

# -i è l’opzione "sostituisci stringhe" <strong>di</strong> xargs.<br />

# Le parentesi graffe rappresentano il segnaposto per la sostituzione.<br />

# 2&>/dev/null elimina i messaggi d’errore indesiderati.<br />

# --------------------------------------------------------------------<br />

exit $?<br />

Esempio 12-8. Analisi <strong>di</strong> frequenza delle parole utilizzando xargs<br />

#!/bin/bash<br />

# wf2.sh: Analisi sommaria della frequenza delle parole in un file <strong>di</strong> testo.<br />

# Usa ’xargs’ per scomporre le righe del testo in parole singole.<br />

# Confrontate quest’esempio con lo script "wf.sh" che viene dopo.<br />

# Verifica la presenza <strong>di</strong> un file <strong>di</strong> input passato da riga <strong>di</strong> comando.<br />

ARG=1<br />

E_ERR_ARG=65<br />

E_NOFILE=66<br />

if [ $# -ne "$ARG" ]<br />

# Il numero <strong>di</strong> argomenti passati allo script è corretto?<br />

then<br />

echo "Utilizzo: ‘basename $0‘ nomefile"<br />

exit $E_ERR_ARG<br />

fi<br />

if [ ! -f "$1" ] # Verifica se il file esiste.<br />

then<br />

echo "Il file \"$1\" non esiste."<br />

exit $E_NOFILE<br />

fi<br />

237

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!