pgielen
Posts: 15
Joined: Sun Feb 24, 2019 6:47 pm

Problemen met bash scrips onder Raspbian

Sat Aug 22, 2020 1:51 pm

Ik heb hierover eerder een vraag gepost op het Domoticz forum, maar eigenlijk is dit meer een algemene RPi vraag, daarom nog eens hier. Ik wil de temperatuur in Domoticz monitoren met een bash-script (dat dan wel weer een waarde doorstuurt naar Domoticz) en kom erachter dat bash nogal vreemd omgaat met variabelen.

Dit is het scriptje:

#! /bin/sh
temp=$(vcgencmd measure_temp | egrep -o '[0-9]*\.[0-9]*')
url="http://192.168.1.5:8080/json.htm?type=c ... alue=$temp"
curl "$url"

Nu geeft curl een 'invalid url' foutmelding en ik breek me er het hoofd over waar dat aan ligt. Handmatig curl met de bijbehorende url invoeren op de CLI werkt namelijk wel.

Inmiddels ben ik erachter dat aan het eind van de variabele temp (waarin de temperatuur van de RPi staat) een ^M (carriage return, 0D) staat en aan het eind van de variabele url staan er zelfs twee. Hoe komen die daar terecht? Is dit een undocumented feature van bash op Raspbian? :?

TheoPA3DSS
Posts: 29
Joined: Fri Nov 09, 2018 9:27 am
Location: Netherlands

Re: Problemen met bash scrips onder Raspbian

Sun Aug 23, 2020 7:04 am

volgens mij moet

Code: Select all

curl "$url"
dit zijn:

Code: Select all

curl $url
dus zonder de " ervoor en erna.
de ^M komt waarschijnlijk dat het script in windows met notepad is gemaakt.

pgielen
Posts: 15
Joined: Sun Feb 24, 2019 6:47 pm

Re: Problemen met bash scrips onder Raspbian

Sun Aug 23, 2020 12:16 pm

Ik schaam me diep dat ik nu alweer in die CRLF val loop, die ik eigenlijk wel zo goed ken. Had in dit geval niet verwacht dat het een probleem zou opleveren, aangezien het niet gaat om een ^M in het script, maar een ^M in de waarde van de variabele waarin de temperatuur wordt opgeslagen. Na het handmatig overtikken van het hele script in nano werkt het wel naar behoren. Bedankt!

TheoPA3DSS
Posts: 29
Joined: Fri Nov 09, 2018 9:27 am
Location: Netherlands

Re: Problemen met bash scrips onder Raspbian

Mon Aug 24, 2020 5:33 am

Graag gedaan !
Je kunt dos2unix installeren op de pi, dan

Code: Select all

dos2unix script.sh
dan zijn alle CRLF's verdwenen.

Return to “Nederlands”