Przeanalizuj działanie następującego skryptu:
#!/bin/bash
i=0
while read line; do
let i++
lines1[$i]=$line
#echo $i " " ${lines1[$i]}
done</etc/hosts
echo "XXX"${lines1[3]}"YYY"
Przeanalizuj działanie następującego skryptu:
#!/bin/bash
i=0
cat /etc/hosts | while read line; do
let i++
lines2[$i]=$line
# echo $i " " ${lines2[$i]}
done
echo "XXX"${lines2[3]}"YYY"
Przeanalizuj działanie następującego skryptu:
#!/bin/bash
(i=0
while read line; do
let i++
lines1[$i]=$line
#echo $i " " ${lines1[$i]}
done</etc/hosts
)
echo "XXX"${lines1[3]}"YYY"
Porównaj działanie powyższych skryptów i odpowiedz na pytanie, dlaczego drugi i trzeci wypisuje tylko
# XXXYYY
Jak można temu zaradzić? Przeanalizuj działanie skryptu:
#!/bin/bash
i=0
cat /etc/hosts | (while read line; do
let i++
lines2[$i]=$line
# echo $i " " ${lines2[$i]}
done; declare -p lines2 > .bash_array)
. .bash_array
echo "XXX"${lines2[3]}"YYY"