/ / Jak prawidłowo dodać znak powrotu do tego skryptu? - bash, gruntjs, npm, jshint

Jak poprawnie dodać znak powrotu do tego skryptu? - bash, gruntjs, npm, jshint

Oto skrypt, którego używam do uruchamiania chrząknięcia „globalnie”. Jest w powłoce bash, a SO chce więcej kontekstu, więc zwróciłem znak powrotu, dzięki czemu jest nieco bardziej „cichy”, gdy biegam 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
}

Chcę mieć postać powrotu w tej części:

  grunt "$a" &

po &

Odpowiedzi:

0 dla odpowiedzi № 1

Po uruchomieniu pomruku otrzymasz jeden z poniższych kodów wyjścia.

  • 0 - Brak błędów!
  • 1 - Błąd krytyczny
  • 2 - Brak błędu gruntfile
  • 3 - Błąd zadania
  • 4 - Błąd przetwarzania szablonu
  • 5 - Błąd nieprawidłowych reguł automatycznego uzupełniania powłoki
  • 6 - Ostrzeżenie

Co możesz zrobić, to złapać to grunt "$a" &>/dev/null następnie wybierz wynik używając $?

Więc możesz to zrobić if [ $? -eq 0 ] jak kontrole kodu powrotu.

&>/dev/null To jest skrót od 2> i 1

Przekierowuje deskryptor pliku 2 i 1 (STDERR i STDOUT) do / dev / null


0 dla odpowiedzi nr 2

Gdy chcesz dokonać wartości zwrotnej, przypisz wartość zwrotną $? do tego:

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

Możesz zmienić grunt.log na / dev / null. Po cd ~/root możesz return ${returnvalue}. Gdy chcesz, aby grunt działał w tle, możesz zmienić linię na

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

To da ci nowe wyzwanie: kiedy zaczynasz w tle, udaje się, a chrząknięcie zawiedzie w ciągu 2 sekund, twoje $? returnvalue tego nie zauważy.
Jak sobie z tym poradzić?
Gdy wartość zwracana wynosi 0, poczekaj chwilę (20 sekund?) I sprawdź plik dziennika.