Mam skrypt, który w niektórych okolicznościach może nie mieć nic na stdout. Na końcu skryptu przekazuję wiersze, które mam, do innego polecenia za pomocą xargs. Mój problem polega na tym, że gdy nie ma nic na stdout, pojawia się typowy komunikat o błędzie „Użycie: program arg1 arg2”.
Jak mogę tego uniknąć?
Odpowiedzi:
Potrzebujesz opcji
-r
lub--no-run-if-empty
.Pamiętaj, że tego konkretnego zachowania trudno jest dokonać na wielu platformach. Domyślnie
xargs
uruchamiane są wersje BSD-r
. Wersja GNU tego potrzebuje. Wersja FreeBSD flagxargs
ignoruje-r
flagę dla zgodności z GNU. Wersja systemu Mac OS X nawet nie akceptuje flagi i zgłasza błądillegal option
.Następnie możesz wybrać opcję wykrywania systemu operacyjnego w
$OSTYPE
celu napisania skryptu międzyplatformowego. Co więcej, spróbuj wykryć zachowaniexargs
samego siebie. Uruchom go,-r
a jeśli to się nie powiedzie (kod stanu> 0), uruchom go bez-r
.źródło
Lekcja, dlaczego powinieneś czytać strony podręcznika…
-r
Lub--no-run-if-empty
flagi są przyjacielu.źródło