Portál AbcLinuxu, 12. května 2025 12:33
Zdravim, potreboval by som v bashi testovat ci prikaz vratil nejaky vystup alebo nie. Nasiel som na toto nasledujucu vecicku:
command && echo OK || echo Failed
Mam ale problem s tym, ze sa mi zobrazi aj samotny vystup z prikazu. Ja by som potreboval iba vypisat ci OK alebo Failed. Ako nezobrazit ten vystup? Dik.
Řešení dotazu:
# presmerovat stdout a stderr command >/dev/null 2>/dev/null && echo OK || echo Failed
if [[ -n $(ls -A) ]]; then echo "there are files" else echo "no files found" fi
[[ -n "$(command 2>&1)" ]] && echo OK || echo Failed
if
:
if command >/dev/null 2>&1; do echo OK else echo Failed fiNebo takováto konstrukce:
command >/dev/null 2>&1 && (echo OK || true) || echo Failed
mike@unicorn:~> echo OK >/dev/full ; echo $? bash: echo: chyba zápisu: Na zařízení není volné místo 1
|| rm -r data
(program selhal → data jsou vadná), tak má problém. Takové chyby se navíc strašně blbě ladí, protože ze shellu by to fungovalo správně.
[[ -n "$(command 2>&1)" ]] && { echo OK || false && true; exit; } || (echo Failed; false)
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.