Thread Konsolenbefehl zusammensetzen? (13 answers)
Opened by introdev at 2019-07-26 15:29

introdev
 2019-07-26 18:26
#190288 #190288
User since
2018-11-20
29 Artikel
BenutzerIn
[default_avatar]
Vielen Dank fürs Feedback.

Die json_decode()-Funktion hat irgendwie ein Problem und stürzt ab, wenn formatierter JSON-Code (mir returns, formatiert mit https://jsonformatter.curiousconcept.com/) vorliegt. Dies unter Raspbian Stretch, mit den aktuellsten Paketen.

Da ich mich ein wenig mit Shell/Bash-Skripts auskenne, habe ich nun das Paket "jq" heruntergeladen und realisiere es über die Ausführung zusammengesetzter Linux-Befehle.

Den String aus der Datei lese ich aus, weil es noch ein anderes Programm gibt (ha-bridge), dem die Datei (auf dem Zielsystem "habridge.config", nicht "test.json") gehört und das sie bearbeitet. Und während dem Bearbeiten kann es offenbar vorkommen, dass der Dateiinhalt komplett gelöscht und neu geschrieben wird.

Vorher hatte ich eine weniger optimale Lösung in der Art (Pseudocode):

Code: (dl )
1
2
3
4
5
6
7
$ip = ...;
$fileSize = getFileSize("/opt/habridge/data/habridge.config");

if($fileSize > 0)
{
`jq /opt/habridge/data/habridge.config... "$ip"... | sponge /opt/habridge/data/habridge.config`;
}


Klar, wenn da die Zeilen innerhalb des "if" dran kommen, dann muss die Datei nicht zwangsläufig grösser als 0 bytes sein.

Deshalb lese ich nun von Anfang den Inhalt der Datei als String aus, wenn dieser grösser als 0 Bytes ist, dann wird vom einem Feld in den JSON-Daten (ip) der Wert geändert - dies nicht in der Datei, sondern im vorher ausgelesenen String. Später wird dann das Ganze zurück in die Datei geschrieben.

Ich kenne mich halt besser mit Shell-Skripts aus, aber es gibt da leider ein Problem in einem unserer Perl-Skripts..

"jq" ist offenbar ein sehr mächtiges Tool und auch nicht unbedingt leicht "auf die Schnelle" zu erlernen. Meinen Befehl (der vorher zu Entwicklungszwecken ein Bash-Skript war - deshalb die "Wurst" ;-)) könnte man sicher noch vereinfachen...(?)


Gruss, Jan
Freundliche Grüsse,
Jan

View full thread Konsolenbefehl zusammensetzen?