Próbuję w shellu najpierw wczytać poszczególne linie do pseudo tablic a następnie je drugą pętlą wydrukować ale nie wiem dlaczego nie widzę odczytanych linii w zmiennych
To mój plik z danymi
root@OpenWrt:/tmp# cat /tmp/temp.txt
28F2B7DA0200004C,24.44
28F2B7DA0200004B,24.50
28F2B7DA0200004A,24.62
28F2B7DA02000049,24.50
root@OpenWrt:/tmp#
A to mój skrypt
c=0
while read -r line; do
printf '%s\n' "$line"
eval Array$c=\"$line\"
c=$(expr $c + 1)
done < /tmp/temp.txt
eval dlg=\"$c\"
#echo $dlg
i=0;
while [ $i -le $dlg ]; do
echo $Array$i
i=$(expr $i + 1)
done
Skrypt niestety nie działa poprawnie bo zamiast zawartości pliku /tmp/temp.txt wyrzuca tylko iteracje
0
1
2
3
4
Edit:
Poradziłem sobie, podpowiedź znalazłem tutaj
http://lists.busybox.net/pipermail/busy … 12110.html
c=0
while read -r line; do
printf '%s\n' "$line"
eval Array$c=\"$line\"
# eval assign="\$Array$c"
# echo $assign
c=$(expr $c + 1)
done < /tmp/temp.txt
eval dlg=\"$c\"
#echo $dlg
i=0;
while [ $i -le $dlg ]; do
eval assign="\$Array$i"
echo $assign
i=$(expr $i + 1)
done
root@OpenWrt:/tmp#
Edit:
Doszedłem do takiego skryptu który z pliku wynikowego z digitempa /tmp/temp.txt i pliku z numerami czujników /tmp/lista.txt generuje temperatury do pliku /tmp/wynik.txt według kolejności czujników
Myślałem że ten skrypt będzie działał szybciej. Da się to jakoś zoptymalizować czy lepiej to zrobić w c/c++ ?
TempFromDigiTemp="/tmp/temp.txt"
TempList="/tmp/lista.txt"
TempOutput="/tmp/wynik.txt"
rm $TempOutput
#odczyt temperatur z listy kolejnosci
c=0
while read -r line; do
eval ArrayOrder$c=\"$line\"
c=$(expr $c + 1)
done < $TempList
eval dlg=\"$(expr $c - 1)\"
#odczyt temperatur z digitempa
c=0
while read -r line; do
zmienna=$(echo $line | cut -f1 -d",")
eval ArrayTempIdList$c=\"$zmienna\"
eval ArrayTempList$c=\"$line\"
c=$(expr $c + 1)
done < $TempFromDigiTemp
#generowanie temperatur na podstawie kolejnosci i odczytow
j=0;
while [ $j -le $dlg ]; do
i=0;
while [ $i -le $dlg ]; do
eval assign="\$ArrayOrder$j"
eval assign2="\$ArrayTempIdList$i"
eval assign3="\$ArrayTempList$i"
temperatura=$(echo $assign3 | cut -f2 -d",")
if [ "$assign" = "$assign2" ]
then
echo $temperatura >> $TempOutput
fi
i=$(expr $i + 1)
done
j=$(expr $j + 1)
done