#!/bin/bash t[0]=0 echo "t a loop előtt: '${t[@]}'" ( echo 1; echo 2; ) |while read i; do t[$i]=$i echo "t a loopban: '${t[@]}'" done echo "t a loop után: '${t[@]}'"
Azt írja ki, hogy:
t a loop előtt: '0' t a loopban: '0 1' t a loopban: '0 1 2' t a loop után: '0'
Miért, ó, mondd miért nincs benne az 1 és a 2 a tömbben a loop után? Mit tegyek, hogy benne legyenek?
szerk.: Na, ha nem ilyen while-read-es a ciklus, hanem egyszerű for (for i in 1 2 ;do), akkor benne van a végén az 1 és a 2 a t-ben. Viszont mindenféle peremfeltétel miatt szükség van a while-read-re... Ötlet?
szerk. v2: Ez működik:
#!/bin/bash t[0]=0 echo "t a loop előtt: '${t[@]}'" { echo 1; echo 2; } >asdf while read i; do t[$i]=$i echo "t a loopban: '${t[@]}'" done <asdf echo "t a loop után: '${t[@]}'"
De hogy miért, illetve hogy a másik miért nem...

Szerkesztette: szeder 2008. 09. 25. 19:35 -kor