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

Dotaz: Vystup do premennej nezachytava novy riadok - BASH

10.5.2011 12:58 xsustek | skóre: 6
Vystup do premennej nezachytava novy riadok - BASH
Přečteno: 199×
Odpovědět | Admin
Ahojte

chcem ukladat vystup programu do premennej v BASH a neskor s premennou pracovat.

OUTPUT=`./program`

problem je v tom, ze v premennej nezostavaju nove riadky.

Je nejaky sposob ako to docielit resp. existuje alternativa napr. docasne subory ktore by som tymto stylom mohol vyuzit?

Řešení dotazu:


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

Odpovědi

10.5.2011 14:33 nikdo
Rozbalit Rozbalit vše Re: Vystup do premennej nezachytava novy riadok - BASH
Odpovědět | | Sbalit | Link | Blokovat | Admin
Mně na to funguje

IFS=''; OUTPUT=`./program`

Ovšem pokud je výstup dlouhý, asi by bylo lepší přesměrovat jej do souboru a pracovat pak se souborem.

./program > soubor.txt ... rm soubor.txt
10.5.2011 14:39 xsustek | skóre: 6
Rozbalit Rozbalit vše Re: Vystup do premennej nezachytava novy riadok - BASH
Ide o to, ze chcem output ulozit a az na zaklade navratovej hodnoty sa rozhodnut ako s nim nalozim.

nieco taketo


OUT=`./program`
if ["$?" eq 0] then
 $OUTPUT >> log.log
else
 ./program2 -p1 yyy -p2 xxx p3 $OUTPUT
fi

jose17 avatar 10.5.2011 15:59 jose17 | skóre: 44 | blog: Joseho_blog | Bratislava
Rozbalit Rozbalit vše Re: Vystup do premennej nezachytava novy riadok - BASH
a co nieco taketo
#!/bin/bash
OUT=`./program`
if [ $? -eq 0 ]; then
 echo "$OUT" >> log.log
else
 ./program2 "$OUTPUT"
fi
Ja vim, on vi, ty nano!
10.5.2011 16:01 xsustek | skóre: 6
Rozbalit Rozbalit vše Re: Vystup do premennej nezachytava novy riadok - BASH
Myslim, ze toto je to iste co som ja napisal, okrem tych uvodzoviek okolo $OUTPUT (som zabudol). kazdopadne toto nepomoze
jose17 avatar 10.5.2011 16:24 jose17 | skóre: 44 | blog: Joseho_blog | Bratislava
Rozbalit Rozbalit vše Re: Vystup do premennej nezachytava novy riadok - BASH
aha. ok. z popisu problemu nebolo jasne, ci sa jedna o trailing newlines alebo newlines ako take. pretoze je rozdiel medzi $OUT s a bez uvodzoviek.
host:~$ OUT=`echo; echo; echo; echo; echo "text"; echo; echo; echo`; echo $OUT
text
host:~$ OUT=`echo; echo; echo; echo; echo "text"; echo; echo; echo`; echo "$OUT"




text
host:~$
Ja vim, on vi, ty nano!
Řešení 1× (xsustek (tazatel))
10.5.2011 14:40 cronin | skóre: 49
Rozbalit Rozbalit vše Re: Vystup do premennej nezachytava novy riadok - BASH
Odpovědět | | Sbalit | Link | Blokovat | Admin
Command Substitution

Command substitution allows the output of a command to replace the command name. There

are two forms:

$(command)

or

`command`

Bash performs the expansion by executing command and replacing the command substitution

with the standard output of the command, with any trailing newlines deleted. Embedded

newlines are not deleted, but they may be removed during word splitting. The command sub‐

stitution $(cat file) can be replaced by the equivalent but faster $(< file).

10.5.2011 15:51 xsustek | skóre: 6
Rozbalit Rozbalit vše Re: Vystup do premennej nezachytava novy riadok - BASH
Da sa nejakym sposobom vytvorit docastna rura alebo nieco take?
jose17 avatar 10.5.2011 16:40 jose17 | skóre: 44 | blog: Joseho_blog | Bratislava
Rozbalit Rozbalit vše Re: Vystup do premennej nezachytava novy riadok - BASH
Ja vim, on vi, ty nano!

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.