Portál AbcLinuxu, 7. května 2025 22:00
Dobrý den,
potřeboval bych poradit, jak naplnit pole pomocí smyčky while. Mám proměnnou $a a proměnnou $b, které obsahují několik řádek textu. Potřeboval bych tyto řádky načíst do dvou polí a pak z těch polí vegenerovat výsledný sformátovaný textový soubor. Zasekl jsem se na tom, že pole se mi sice naplní, ale v momentě, kdy skončí smyčka, tak se vymaže a je prázdné:
p=0
echo "$a" | while read x
do
sablona[$p]="$x"
p=$(( $p+1 ))
done
Během tohoto cylku se pole naplní, každá řádka do jedné pozice. Když do cyklu připíšu echo "${sablona[*]}" tak se krásně vypíše obsah. Když to samé udělám po ukončení cyklu, tak je pole prázdné. Nemohu přijít na to proč. Můžete mi někdo poradit? Děkuji.
echo ${a[@]}NN
p=0 while read x do sablona[$p]="$x" p=$(( $p+1 )) done <<<"$a"viz. BashFAQ/001 jestli se nepletu tak váš příklad nefunguje kvůli rouře, která spouští nový bash (někdo to možná upřesní)
exec <<<"$a" while read x; do ... done
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.