chcę wrócić kod zakończenia równy 0, jeśli wyjście jest pusta i 1 inaczej:Jak sprawdzić, czy dane wyjściowe polecenia "znajdź" są puste?
find /this/is/a/path/ -name core.*
chcę wrócić kod zakończenia równy 0, jeśli wyjście jest pusta i 1 inaczej:Jak sprawdzić, czy dane wyjściowe polecenia "znajdź" są puste?
find /this/is/a/path/ -name core.*
Kiedy mówisz, że chcesz go zwrócić szczególną liczbę, jesteś odnosząc się do stanu wyjścia? Jeśli tak, to:
[[ -z `find /this/is/a/path/ -name core.*` ]]
A skoro tylko dbają o tak/nie odpowiedzi, może chcesz zmienić swoje znalezisko do tego:
[[ -z `find /this/is/a/path/ -name core.* -print -quit` ]]
który zatrzyma się po pierwszym pliku rdzenia znaleźć. Bez tego, jeśli katalog główny jest duży, znalezienie może trochę potrwać.
Prawdopodobnie istnieje wiele wariantów, ale to jest jeden:
test $(find /this/is/a/path/ -name core.* | wc -c) -eq 0
Oto moja wersja. :)
[ -z "$(find /this/is/a/path/ -name 'core.*')" ] && true
Edited dla zwięzłości:
[ -z "$(find /this/is/a/path/ -name 'core.*')" ]
co jest '&& TRUE dla? –
Heh, myślałem: "Aby ustawić status wyjścia." Ale tak, duh, test już to robi, jest całkowicie niepotrzebny, dobry chwyt. –
Może to
find /this/is/a/path/ -name 'core.*' | read
To zwróci 0, jeśli wyjście nie jest puste, a nie, jeśli jest puste. –
Ups. Logika została odwrócona. Skorygowano powyżej. Alex jest poprawny z '-z' –
+1 dla opcji '-quit', bardzo ładnie! –