Bash Variable in ein Array schieben

meph!sto

Vice Admiral
Registriert
Nov. 2003
Beiträge
6.165
Hi,
in Vorbereitung meine bestellten Bluetooth Temperatursensoren auszulesen, habe ich mich daran gemacht die Abfragen per Bash zu erstellen, sodass diese später per cronjob abgerufen werden können.

Bash:
TEST="Getting data from Mi Temperature and Humidity Sensor
FW: 00.00.66
Name: MJ_HT_V1
Battery: 85
Temperature: 21.8
Humidity: 44.1"

echo $TEST
UPDATE_DATE=$(date +%d.%m.%Y)
UPDATE_TIME=$(date +%T)
REGEX_BATTERY="Battery: [0-9]\{1,2\}"
REGEX_TEMP="Temperature: [0-9]\{1,2\}.[0-9]\{1,2\}"
REGEX_HUMID="Humidity: [0-9]\{1,2\}.[0-9]\{1,2\}"
#BATTERY="9"
#TEMP="8"
#HUMID="7"

declare -a REGEX=("$REGEX_BATTERY" "$REGEX_TEMP" "$REGEX_HUMID")
declare -a READINGS=($BATTERY $TEMP $HUMID $UPDATE)
i=0
for R in "${REGEX[@]}"
do
    TMP_VAR=$(echo $TEST | grep -or "$R" | cut -d ' ' -f2)
    echo $TMP_VAR
    ${READINGS[i]}=$(echo $TMP_VAR)
    
    echo "count="$i
    i=$((i+1))
done

Die Fehlermeldung die ausgespuckt wird lautet:
Bash:
source_file.sh: line 28: =85: command not found
source_file.sh: line 28: =21.8: command not found
source_file.sh: line 28: =44.1: command not found

Die Fehlermeldung ist auch nachvollziehbar, denn die Befehle "=85" etc gibt es natürlich nicht.
Was mir Kopfzerbrechen bereitet ist, dass die Zuweisung ${READINGS[i]}=$(echo $TMP_VAR) nicht funktioniert und langsam gehen mir die Ideen aus.

Mein Ziel ist es am Ende ein Array zu haben, mit den Werten READINGS=($BATTERY $TEMP $HUMID $UPDATE)

Ich hoffe ihr könnt mir einen Tipp geben bzw. den Fehler direkt sehen (ich kann ich es nicht),

Danke
 
Danke!
Hat mich in die richtige Richtung gebracht
 
Zurück
Oben