/ / Come posso aggiungere correttamente un carattere di ritorno a questo script? - bash, gruntjs, npm, jshint

Come aggiungo correttamente un carattere di ritorno a questo script? - bash, gruntjs, npm, jshint

Ecco uno script che uso per eseguire grunt "a livello globale". È in una shell bash e SO vuole più contesto, quindi desidero il carattere di ritorno in modo che sia un po 'più "silenzioso" quando corro beast watch.

beast() {
cd ~/root_install/grunt
local a="$1"
if [ $# -eq 0 ]
then
grunt &
fi
if [ $# -eq 1 ]
then
grunt "$a" &
fi
cd ~/root
}

Voglio un personaggio di ritorno in questa parte:

  grunt "$a" &

dopo il &

risposte:

0 per risposta № 1

Quando esegui grugnito otterrai uno dei seguenti codici di uscita.

  • 0 - Nessun errore!
  • 1 - Errore fatale
  • 2 - Errore gruntfile mancante
  • 3 - Errore dell'attività
  • 4 - Errore di elaborazione del modello
  • 5 - Errore delle regole di completamento automatico della shell non valido
  • 6 - Avvertenza

Quello che puoi fare è afferrarlo come grunt "$a" &>/dev/null quindi seleziona il risultato usando $?

Quindi puoi farlo if [ $? -eq 0 ] come i controlli sul codice di ritorno.

&>/dev/null Questa è solo un'abbreviazione per 2> & 1

Reindirizza il descrittore di file 2 e 1 (STDERR & STDOUT) su / dev / null


0 per risposta № 2

Quando si desidera creare un valore di ritorno, assegnare il valore di ritorno $? ad esso:

   grunt "$a" > grunt.log 2>&1
returnvalue=$?

È possibile modificare grunt.log in / dev / null. Dopo cd ~/root puoi return ${returnvalue}. Quando si desidera eseguire il grugnito in background, è possibile modificare la linea in

nohup grunt "$a" > grunt.log 2>&1 &

Questo ti darà una nuova sfida: quando iniziare in background ha successo e il grugnito fallisce in 2 secondi, il tuo $? returnvalue non lo noterà.
Come gestirlo?
Quando il valore di ritorno è 0, attendere qualche minuto (20 secondi?) E controllare il file di registro.