Portál AbcLinuxu, 14. července 2025 06:05


Dotaz: predani standartniho vstupu

19.5.2006 14:31 peky
predani standartniho vstupu
Přečteno: 119×
Odpovědět | Admin
zdravim vsechny

napsal jsem si skript, ktery nejakym zpusobem zpracova soubor, tzn.
./skript file
nemohu prijit na to jak ziskat vystup z roury abych ji mohl pouzit v mem skriptu ?

at uz
cat file | ./skript
nebo
 < file ./skript
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

19.5.2006 14:54 Michal Čihař | skóre: 61 | blog: Bláboly | Praha
Rozbalit Rozbalit vše Re: predani standartniho vstupu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Co třeba nezadávat žádné přesměrování?
Weblate - překládání přes web | Gammu SMSD - posílání SMS | Blog
19.5.2006 15:05 peky
Rozbalit Rozbalit vše Re: predani standartniho vstupu
?? o moc nechapu , v tom skriptu s tim souborem potrebuji pracovat tzn . ze pouziji jen $1 uvnitr skriptu nebo potrebuji overit zdali byl zadan potrebny soubor

??
19.5.2006 15:05 Zdeněk Burda | skóre: 61 | blog: Zdendův blog | Praha
Rozbalit Rozbalit vše Re: predani standartniho vstupu
Odpovědět | | Sbalit | Link | Blokovat | Admin
[23:04:16]-[/tmp]-
[tsunami@vodik]$ echo aloha | ./skript.sh
muj testovaci skript
std vstup nacten a zapasn do /tmp/pokus
vypis souboru /tmp/pokus:
aloha

[23:04:17]-[/tmp]-
[tsunami@vodik]$ cat skript.sh
#!/bin/bash

echo muj testovaci skript
while read promena; do
        echo $promena >> /tmp/pokus
done
echo std vstup nacten a zapasn do /tmp/pokus
echo vypis souboru /tmp/pokus:
cat /tmp/pokus
-- Nezdar není hanbou, hanbou je strach z pokusu.
19.5.2006 15:11 peky
Rozbalit Rozbalit vše Re: predani standartniho vstupu
super to je ono, ale pokud se dobre pamatuji tak read je jen pro cteni radku a kdyz na zacatku roury bude file a ja nebutu chtit vytvaret zadny soubor byla by nejaka moznost jak to spachat ?

diky
19.5.2006 15:16 Zdeněk Burda | skóre: 61 | blog: Zdendův blog | Praha
Rozbalit Rozbalit vše Re: predani standartniho vstupu
Nevím jestli ti rozumím správně, chceš vše co ti jde ze standardního vstupu do jedné proměnné?
-- Nezdar není hanbou, hanbou je strach z pokusu.
19.5.2006 15:20 peky
Rozbalit Rozbalit vše Re: predani standartniho vstupu
no chtel bych s tim standartnim vstupem ve skriptu pracovat jako napriklad grep, kde grep 'aaaa' soubor funguje stejne jako cat soubor | 'aaaa'
19.5.2006 15:22 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: predani standartniho vstupu
Takže když si odmyslím, že to, co jste právě napsal, nedává smysl, jde nakonec jen o to, aby skript četl standardní vstup, je-li spuštěn bez parametrů, a obsah souboru, dostane-li parametr?
19.5.2006 15:24 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: predani standartniho vstupu
Je-li tomu tak, pak použijte něco na způsob
  if [ $# -gt 0 ]; then
    exec <"$1"
  fi
19.5.2006 15:28 peky
Rozbalit Rozbalit vše Re: predani standartniho vstupu
presne :} fakt ostuda, nejen ze jste mi poradil s odpovedi, ale i s formulaci otazky ...

Dekuji :]
19.5.2006 15:22 Zdeněk Burda | skóre: 61 | blog: Zdendův blog | Praha
Rozbalit Rozbalit vše Re: predani standartniho vstupu
Tak si kontroluj jestli je zadán parametr s názvem souboru a pokud není tak prostě čekej na standardní vstup.
-- Nezdar není hanbou, hanbou je strach z pokusu.
19.5.2006 15:21 Zdeněk Burda | skóre: 61 | blog: Zdendův blog | Praha
Rozbalit Rozbalit vše Re: predani standartniho vstupu
pokud to tak skutečně je, tak zkus pracovat ve skriptu s /dev/stdin, ale nevím jestli to je zrovna nejlepší postup...
-- Nezdar není hanbou, hanbou je strach z pokusu.
19.5.2006 15:17 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: predani standartniho vstupu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Pokud skript (nebo jiný příkaz) očekává jméno souboru, lze to obejít pomocí '<(příkaz)', ale jak už bylo řečeno jinými, praktičtější je napsat si skript tak, aby četl standardní vstup, a v případě, že chcete číst obsah souboru, použít přesměrování.
19.5.2006 15:19 kaaja | skóre: 24 | blog: Sem tam něco | Podbořany, Praha
Rozbalit Rozbalit vše Re: predani standartniho vstupu
Odpovědět | | Sbalit | Link | Blokovat | Admin
skusil jsi
cat file| ./skript /dev/stdin
19.5.2006 18:45 peky
Rozbalit Rozbalit vše Re: predani standartniho vstupu
Odpovědět | | Sbalit | Link | Blokovat | Admin
jeste dodatecny dotaz

lze nekam cely standartni vstup, protoze furt nechapu jak to mam udelat kdyz ve skriptu budu mit funkci treba
funkce()
{
grep 'aaa'
}
a pak tu funkci zavolam napr 2x
funkce 
funkce
tak ziskam vysledek jen z 1. volani
19.5.2006 18:56 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: predani standartniho vstupu
Zkuste nejdřív napsat, co vlastně přesně chcete, aby to udělalo.
19.5.2006 19:19 peky
Rozbalit Rozbalit vše Re: predani standartniho vstupu
pracuji bud se souborem

./skript -parametry 'RE' soubor

nebo s rourou

cat soubor | ./skript -parametry 'RE'

skript mi v prvni rade zjisti jestli soubor obsahuje 'RE' pak jej vypisi
19.5.2006 19:26 peky
Rozbalit Rozbalit vše Re: predani standartniho vstupu
a pokud neobsahu 'RE' vypisi error
19.5.2006 23:12 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: predani standartniho vstupu
Obávám se, že tohle v plné obecnosti bez pomocného souboru nevyřešíte - a vlastně ani s ním. Uvědomte si, že na ten vstup můžete od jiného programu dostat několik TB dat a vzorek (pokud tam vůbec je) může být až na konci.
20.5.2006 11:27 peky
Rozbalit Rozbalit vše Re: predani standartniho vstupu
no a co kdybych si v pripade ze se jedna o standartni vstup jej ulozil do promene
vstup=`sed -n "p"`
ale kdyz tuto promennou vypisi, je vse na jednom radku :[
David Watzke avatar 20.5.2006 11:28 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: predani standartniho vstupu
Tak použij uvozovky: echo "$vstup".
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
20.5.2006 11:40 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: predani standartniho vstupu
To bude fungovat jen v případě, že je ten vstup hodně krátký - tak, aby se celý vešel do proměnné. Prostě si uvědomte, že ten vstup dostanete jen jednou, musíte ho celý projít, abyste zjistil, jestli tam vzorek je, a pak ho potřebujete vypsat. Takže si ho musíte někam uložit - buď do paměti nebo na disk. První varianta bude rychlejší, ale bude mít menší limit na velikost zpracovatelného vstupu. Tak či onak tam nějaký limit mít budete.
20.5.2006 11:50 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: predani standartniho vstupu
Tak ne zase tak hodně - právě jsem do proměnné prostředí (v bashi) dostal 256 MB textu. Ale příliš rozumný přístup to stejně není.
20.5.2006 11:58 peky
Rozbalit Rozbalit vše Re: predani standartniho vstupu
jojo to jsem potreboval slyset :}

asi nejrozumneji se jevi ten soubor diky

jen pro zajimavost..kdyby to byl dejme tomu jen velmi kratky soubor, proc mi to vse vypise na jeden radek ? (viz predchozi prizpevek promenna vstup )
20.5.2006 12:09 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: predani standartniho vstupu
Protože jste použil přepínač -n. Mimochodem, sed je v tomto případě zbytečný, stačilo použít opovrhovaný cat.

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.