Portál AbcLinuxu, 10. května 2025 01:59

Dotaz: Jak otestovat jestli prikaz vratil nejaky text. BASH.

7.8.2007 15:02 Lemmy
Jak otestovat jestli prikaz vratil nejaky text. BASH.
Přečteno: 429×
Odpovědět | Admin
Ahoj,

chtel bych se zeptat jestli je mozne nejak v BASHi otestovat jestli provedeny prikaz vratil nejaky text.

Mam totiz problem s prikazem ip rule show. Tento prikaz mi totiz jako navratovou hodnotu v promenne $? vraci vzdy nulu, i kdyz tento prikaz nic nezobrazi. Tim padem nemuzu promennou $0 pouzit pro rozhodovani.

Potrebuji tedy otestovat uspesnost prikazu tim jestli vrati nejaky text.

Diky za radu.
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

7.8.2007 15:07 pasmen | skóre: 45 | blog: glob | Praha
Rozbalit Rozbalit vše Re: Jak otestovat jestli prikaz vratil nejaky text. BASH.
Odpovědět | | Sbalit | Link | Blokovat | Admin
Promenna $? vraci navratovy kod predchoziho prikazu, ne jeho vystup na stdout. Pokud chces do promenne $test vlozit vystup z ip rule show, pouzij
test=$( ip rule show )
David Watzke avatar 7.8.2007 15:14 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: Jak otestovat jestli prikaz vratil nejaky text. BASH.
Odpovědět | | Sbalit | Link | Blokovat | Admin
[[ -z "$(ip rule show 2>&1)" ]] && echo "Prikaz nevratil text..."
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
andree avatar 7.8.2007 17:53 andree | skóre: 39 | blog: andreeeeelog
Rozbalit Rozbalit vše Re: Jak otestovat jestli prikaz vratil nejaky text. BASH.
Odpovědět | | Sbalit | Link | Blokovat | Admin
nejak som to nepochopil, ale ked chces text z prikazu, staci pouzit nieco ako `ip rule show`... ked potom chces otestovat, ci je to prazdne, pouzi konstrukciu ako
if [ "x`ip rule show`" = x ]; then
  echo "prazdny retazec";
fi
7.8.2007 18:06 Jan Martinek | skóre: 43 | blog: johny | Brno
Rozbalit Rozbalit vše Re: Jak otestovat jestli prikaz vratil nejaky text. BASH.
Odpovědět | | Sbalit | Link | Blokovat | Admin
Kdyby třeba někoho zajímalo, jak číst v pythonu PID, výstup a návratovou hodnotu ...
#!/usr/bin/python
# -*- coding:utf-8 -*-

import subprocess

def run(cmd):
    pr = subprocess.Popen(cmd, stdout = subprocess.PIPE)
    cmd_flat = ' '.join(cmd)
    pid = pr.pid
    output = pr.stdout.read()
    print 'Výstup příkazu "%s" (pid %d):' %(cmd_flat, pid)
    if not output:
        print 'Zhola žádný.'
    else:
        print output
    print 'Návratová hodnota: ', pr.wait()

run(['/sbin/ip', 'rule', 'show'])
run(['false'])
run(['true'])
9.8.2007 17:35 Tomas
Rozbalit Rozbalit vše Re: Jak otestovat jestli prikaz vratil nejaky text. BASH.
Odpovědět | | Sbalit | Link | Blokovat | Admin
if ip rule show | grep -q hledany_text ; then neco ; else neco_jineho ; fi

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.