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 № 1Po 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.