Zadanie polegało mi na utworzeniu skryptu zautomatyzowanego serwera, a jednym z nich był raport wszystkich wyników każdego wykonanego polecenia. Chcę zapisać komunikat o błędzie w ciągu i dołączyć go do pliku tekstowego.
Powiedzmy, że uruchomiłem to polecenie:
/sbin/modprobe -n -v hfsplus
Wynikiem uruchomienia tego na moim komputerze byłoby:
FATAL: Module hfsplus not found
Jak mogę zapisać ten komunikat o błędzie w ciągu? Każda pomoc byłaby bardzo mile widziana. Dzięki!
Odpowiedzi:
możesz to zrobić przekierowując polecenie error:
jako skrypt
lub
jeśli chcesz dołączyć błąd użyj
>>
zamiast>
Upewnij się, że używasz
2>&1
i nie2> &1
omijasz błędu „błąd składni w pobliżu nieoczekiwanego tokena„ & ””źródło
Wystarczy zapisać jako ciąg w skrypcie bash:
Może to być nieco lepsze, ponieważ zobaczysz komunikaty po wykonaniu polecenia:
źródło
Wychwytuję błąd w ten sposób
jeśli źródło nie powiedzie się, wychwycę błąd i zapiszę go. log_warn to tylko prosta funkcja.
BTW, używam tego w moich plikach dot
źródło
Aby dołączyć do pliku użyj
/sbin/modprobe -n -v hfsplus 2>> filename
źródło
Nowsze wersje bash (tj. Bash 4.1+):
źródło
Aby zwrócić komunikat o błędzie w zmiennej, wystarczy;
źródło