Wymagana pomoc - w kontekście skryptów powłoki w bash GNU / LINUX:
Zawsze używam set -e
. Często chciałbym grep
i nie zawsze chcę, aby skrypt zakończył wykonywanie, jeśli grep
ma status wyjścia 1
wskazujący, że wzorzec nie został znaleziony.
Rozwiązania tego problemu próbowałem rozwiązać w następujący sposób:
(Spróbuj I)
Jeśli set +o pipefail
i wywołam grep z czymś takim grep 'p' | wc -l
, otrzymam pożądane zachowanie, dopóki przyszły opiekun nie włączy pipefail
. Lubię też włączać, pipefail
więc to nie działa dla mnie.
(Wypróbuj II)
Użyj sed
lub awk
i tylko wypisz linie pasujące do wzoru, a następnie wc
pasujące linie, aby przetestować pasujący wzór. Nie podoba mi się ta opcja, ponieważ używanie sed
do grep
wydaje się obejściem mojego prawdziwego problemu.
(Spróbuj III)
Ten jest moim najmniej ulubionym - coś w stylu:set +e; grep 'p'; set-e
Każdy wgląd / idiomy będą mile widziane - dziękuję.
make
ponieważ nie zawsze wychodzi z błędów. Jeśli chodzi o powiązane dyskusje na temat POSIX, możesz sprawdzić austingroupbugs.net