Portál AbcLinuxu, 8. května 2025 22:32

Dotaz: Bash zpracovani standartniho vstupu

21.3.2009 16:46 LorD_OniX
Bash zpracovani standartniho vstupu
Přečteno: 797×
Odpovědět | Admin

Ahoj, potreboval bych poradit ohledne jedne veci, kterou potrebuju k vypracovani projektu.

Mam skript napr. skript.sh, ktery je normalne spustitelny, nezpracovava zadne soubory, ale standartni vstup stdin, takze jeho pouziti je takoveto napr.

echo "nejaky text ke zpracovani" | ./skript.sh

a bohuzel nevim pres ktere vhodne nastroje dale v tomto skriptu upravovat standartni vstup. Ve skriptu se nacte standartni vstup, zpracuje a posle potom na standartni vystup. Predem diky za odpovedi nebo za priklad zpracovani tohoto vstupu ve skriptu.

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

Odpovědi

21.3.2009 16:57 Vojtěch Horký | skóre: 39 | blog: Vojtův zápisník | Praha
Rozbalit Rozbalit vše Re: Bash zpracovani standartniho vstupu
Odpovědět | | Sbalit | Link | Blokovat | Admin
bohuzel nevim pres ktere vhodne nastroje dale v tomto skriptu upravovat standartni vstup

Přes jakékoliv. Jenom je nutné si uvědomit, že první takový program celý standardní vstup sežere a další už ho budou čekat z klávesnice (takže je nejjednodušší ho na začátku catnout do pomocného souboru a z něj ho pak číst).

I am always ready to learn although I do not always like to be taught. (W. Churchill)
21.3.2009 17:04 LorD_OniX
Rozbalit Rozbalit vše Re: Bash zpracovani standartniho vstupu

Dobre catnout ho, ja to chapu co mate na mysli, ale nevim jak to provest, co dat do toho skriptu aby to reprezentovalo ten standartni vstup.

Jestli muzete napiste tu syntaxi pro ulozeni toho vstupu pres cat do souboru

21.3.2009 17:25 Vojtěch Horký | skóre: 39 | blog: Vojtův zápisník | Praha
Rozbalit Rozbalit vše Re: Bash zpracovani standartniho vstupu

Tam nejde o žádnou syntaxi. Potom, co je skript spuštěn, tak shell naváže svůj standardní vstup na jeho a jede se dál.

Mám-li takovýto skript.sh,
#!/bin/sh
cat >tmp
tak pokud provedu
echo "ahoj" | ./skript.sh
tak bude v souboru tmp bude text ahoj. Pokud ale provedu
./skript.sh
tak se skript zablokuje a bude očekávat data z klávesnice (a vše, co napíšu - až pod Ctrl+D se uloží do tmp).
I am always ready to learn although I do not always like to be taught. (W. Churchill)
21.3.2009 17:52 LorD_OniX
Rozbalit Rozbalit vše Re: Bash zpracovani standartniho vstupu

Diky, uz jsem to pochopil jak to funguje a ze se da pouzit pro ostatni napr. i:

while read line
do
    echo $line
done

Jenon se zeptam mimo. Nevite jak si doinstalovat manualove stranky do ubuntu, protoze potrebuju pracovat s prikazem apropos a pro zadani hodnoty napr.

apropos brk, me nevypise zadne moznosti. Dival jsem se do synapticu a mam naistalovany balicek man-db posledni verze. Diky moc za odpoved

21.3.2009 17:52 luky
Rozbalit Rozbalit vše Re: Bash zpracovani standartniho vstupu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Normálně program spuštěný ze skriptu při čtení standardniho vstupu čte standardní vstup toho skriptu; a při zapisování na standardní výstup zapisuje na standardní výstup toho skriptu. Pak jsou ještě různé možnosti přesměrování vstupu a výstupu. Tady jsou 4 jednoduché příklady, jak to funguje je detailně popsáno v dokumentaci. Jaké programy a jak použijete pro řešení Vašeho projektu už je na Vás.
$ cat pocet_slov_1.sh
#!/bin/sh
wc -w
$ echo "read the fucking manual" | ./pocet_slov_1.sh
4
$ cat pocet_slov_2.sh
#!/bin/sh
read text
echo $text | wc -w
$ echo "read the fucking manual" | ./pocet_slov_2.sh
4
$ cat pocet_slov_3.sh
#!/bin/sh
pocet=$( wc -w )
echo "Pocet slov: $pocet"
$ echo "read the fucking manual" | ./pocet_slov_3.sh
Pocet slov: 4
$ cat pocet_slov_4.sh
#!/bin/sh
read text
pocet=$( echo $text | wc -w )
echo "Zadany text: $text"
echo "Pocet slov: $pocet"
$ echo "read the fucking manual" | ./pocet_slov_4.sh
Zadany text: read the fucking manual
Pocet slov: 4

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.