Portál AbcLinuxu, 4. května 2025 07:37

Dotaz: while cyklus v příkazu echo

14.5.2009 00:14 Tomáš | skóre: 7
while cyklus v příkazu echo
Přečteno: 373×
Odpovědět | Admin
Potřeboval bych nějakým způsobem udělat následující:

tímto předávám gnuplotu, co by měl udělat
echo "set terminal png" | gnuplot

a ted mám např. pole příkazů
pole[0]="set pointsize 0.2"
pole[1]="set xdata time"


A ty příkazy z pole bych potřeboval pomocí nějakého cyklu dostat do gnuplotu. Zkoušel jsem vytvořit nějakým způsobem while cyklus v echu, ale to mi nefungovalo (možná jsem to dělal špatně). Předem nevím, kolik těch příkazů bude a jak velké to pole bude. To zjistím až při načítání configu.

Řešení dotazu:


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

Odpovědi

14.5.2009 00:27 petris_ | skóre: 12
Rozbalit Rozbalit vše Re: while cyklus v příkazu echo
Odpovědět | | Sbalit | Link | Blokovat | Admin
echo ${pole[*]} | gnuplot
14.5.2009 00:29 petris_ | skóre: 12
Rozbalit Rozbalit vše Re: while cyklus v příkazu echo
Pokud byste preci jen trval na cyklu, tak

for i in ${POLE[*]}; do echo $i; done | gnuplot
14.5.2009 00:57 Andrej | skóre: 51 | blog: Republic of Mordor
Rozbalit Rozbalit vše Re: while cyklus v příkazu echo
Odpovědět | | Sbalit | Link | Blokovat | Admin

Odpověď výše je tím nejlepším řešením.

K tomu „while“ cyklu, když už bych ho prostě ze zásady chtěl:

{ for i in ${pole[*]}; do echo -n "$i "; done; } | gnuplot

Ale není důvod tam cpát cyklus.

Řešení 1× (Tomáš (tazatel))
14.5.2009 02:04 Tomáš | skóre: 7
Rozbalit Rozbalit vše Re: while cyklus v příkazu echo
Nevím proč, ale ani jedno z těch dvou řešení nefungovalo správně. Nakonec jsem našel na googlu toto a to jediné funguje.

for ((i=0; i<${#pole[@]}; i++)); do echo "set ${pole[${i}]}"; done Ale děkuju za rady, nasměrovalo mě to na správnou cestu.
Řešení 1× (Tomáš (tazatel))
14.5.2009 10:39 #Tom | skóre: 32 | blog: Inspirace, aneb co jsem kde vyhrabal
Rozbalit Rozbalit vše Re: while cyklus v příkazu echo
Z výše uvedených funguje ještě #2, pokud se zamění * za @. Hvězdička rozvine celé pole do jediného řetětce, zatímco při použití zavináče se rozvíjí jednotlivé prvky samostatně. Příkaz echo pak za každý řetězec vloží nový řádek a gnuplot řadě příkazů správně porozumí. Pokud by měly být všechny příkazy v jediném řádku, bylo by potřeba je oddělit středníkem. Pokud by toto bylo provedenu už při nastavení pole, fungoval by i postup #1.

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.