Domanda

Ho uno script bash che esegue un programma con parametri. Quel programma genera un certo stato (facendo questo, facendo quello ...). Non è possibile che questo programma sia silenzioso. Come posso impedire che lo script visualizzi qualcosa?

Sto cercando qualcosa come Windows " echo off " ;.

È stato utile?

Soluzione

Quanto segue invia l'output standard al dispositivo null (bit bucket).

scriptname >/dev/null

e se vuoi che vengano inviati anche messaggi di errore, usa uno dei (il primo potrebbe non funzionare in tutte le shell):

scriptname &>/dev/null
scriptname >/dev/null 2>&1
scriptname >/dev/null 2>/dev/null

e, se si desidera registrare i messaggi ma non vederli, sostituire / dev / null con un file effettivo, come:

scriptname &>scriptname.out

Per completezza, in Windows cmd.exe (dove "nul" è l'equivalente di "quot / / dev / null"), è:

scriptname >nul 2>nul

Altri suggerimenti

Qualcosa di simile

script > /dev/null 2>&1

Ciò impedirà l'output standard e output degli errori, reindirizzandoli entrambi su / dev / null .

Prova

: $(yourcommand)

: è l'abbreviazione di " non fare nulla " ;.

$ () è solo il tuo comando.

Un'alternativa che può adattarsi in alcune situazioni è quella di assegnare il risultato di un comando a una variabile:

$ DUMMY=$( grep root /etc/passwd 2>&1 )
$ echo $?
0
$ DUMMY=$( grep r00t /etc/passwd 2>&1 )
$ echo $?
1

Poiché Bash e altri interpreti della riga di comando POSIX non considerano le assegnazioni di variabili come un comando, il codice di ritorno del comando corrente viene rispettato.

Nota: l'assegnazione con la parola chiave typeset o declare viene considerata come un comando, quindi il codice di ritorno valutato nel caso sia l'assegnazione stessa e non il comando eseguito nella sotto-shell:

$ declare DUMMY=$( grep r00t /etc/passwd 2>&1 )
$ echo $?
0

Come andynormancx post usa questo: (se lavori in un ambiente Unix)

scriptname > /dev/null

oppure puoi usare questo: (se lavori in un ambiente Windows)

scriptname > nul

Dai un'occhiata a questo esempio da La documentazione di Linux Progetto :

  

3.6 Esempio: file stderr e stdout 2

     

Questo posizionerà ogni output di un programma in un file. Questo è adatto a volte per le voci cron, se si desidera che un comando passi in assoluto silenzio.

     rm -f $(find / -name core) &> /dev/null 

Detto questo, puoi usare questo semplice reindirizzamento:

/path/to/command &>/dev/null

Nel tuo script puoi aggiungere quanto segue alle righe che sai che daranno un output:

some_code 2>>/dev/null

Oppure puoi anche provare

some_code >>/dev/null
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top