Sida 1 av 1

bash while-loop värde av variabel

Postat: 18 augusti 2020, 10:04:43
av Oltronix
Varför funger inte detta?

Kod: Markera allt

#!/bin/bash
filename=tempxx
ls /mnt/1wire | grep 10 > $filename
i=1
while read -r  line; do
t$i=`cat /mnt/1wire/$line/temperature`
i=$((i+1));
done < $filename
  • pi@mumin3:~/datalogger $ ./wgivare_t.sh
    ./wgivare_t.sh: line 7: t1=25.375: command not found
    ./wgivare_t.sh: line 7: t2=25.625: command not found
    ./wgivare_t.sh: line 7: t3=25.5: command not found
    ./wgivare_t.sh: line 7: t4=30.4978: command not found
    ./wgivare_t.sh: line 7: t5=22.625: command not found
Förståss går det att göra så här, men jag vill alltid veta varför det blir syntaxfel:

Kod: Markera allt

#!/bin/bash
filename=tempxx
ls /mnt/1wire | grep 10 > $filename
i=1
while read -r  line; do
ti=`cat /mnt/1wire/$line/temperature`
echo $ti >> tempyy
i=$((i+1));
done < $filename
ps jag använder owfs därav utseende på en del paths. Owfs är inte en del av problemet.

Re: bash while-loop värde av variabel

Postat: 18 augusti 2020, 11:13:48
av mAVRick
Uttrycket på rad 7 tolkas (efter expandering) som ett kommando, inte en tilldelning.
Jag tror problemet är dynamiska variabelnam. En snabb googling säger att det inte verkar omöjligt att få till, men jag tror du gör klokt i att försöka undvika sådana konstruktioner.