Hilfe f. Script | Array und Rechnen

  • Ab sofort steht euch hier im Forum die neue Add-on Verwaltung zur Verfügung – eine zentrale Plattform für alles rund um Erweiterungen und Add-ons für den DSM.

    Damit haben wir einen Ort, an dem Lösungen von Nutzern mit der Community geteilt werden können. Über die Team Funktion können Projekte auch gemeinsam gepflegt werden.

    Was die Add-on Verwaltung kann und wie es funktioniert findet Ihr hier

    Hier geht es zu den Add-ons

peterhoffmann

Benutzer
Sehr erfahren
Registriert
17. Dez. 2014
Beiträge
6.057
Reaktionspunkte
1.858
Punkte
254
Hallo,

ich bräuchte mal 'nen Stupser oder ein gebratenes Täubchen. :-)

Das Script liest alle Container von Docker ein, dazu einen weiteren Wert und legt diese in einem Array ab.

Beispiel:
Code:
ContainernameA;3 ContainernameB;7 ContainernameC;2 ContainernameD;17

Das Auslesen wiederholt sich z.B. alle 10 Sekunden. Nun sollen die neuen Werte immer jeweils zu den alten Werten addiert werden.
Irgendwie fehlt mir der richtige Ansatz.

Zum Aufbau: Das Ablegen der Werte wäre änderbar, wenn das hilfreich ist. Im Moment ist es Containername;Wert. Auch muss es zwingend kein Array sein.
 
Was genau bräuchtest du denn?
Das splitten ist hier ganz gut beschrieben https://www.geeksforgeeks.org/shell-script-to-split-a-string/ und dann musst du es ja nur noch addieren...

Ich weiß ja nicht was du vor hast und was du verwendest, aber eine Datenstruktur würde es einfacher machen. Ich würde entweder mit jq oder node ein JSON generieren. Dann kannst du es viel einfacher durchlaufen und musst nicht mit Strings arbeiten
 
  • Like
Reaktionen: framp
Bash:
#!/bin/bash

declare -A arrayOld=( [ContainernameA]=0 [ContainernameB]=0 [ContainernameC]=0 [ContainernameD]=0 )
declare -A arrayNew=( [ContainernameA]=3 [ContainernameB]=7 [ContainernameC]=2 [ContainernameD]=17 )

for e in "${!arrayOld[@]}"; do

    (( arrayOld[$e] += ${arrayNew[$e]} ))

done

for e in "${!arrayOld[@]}"; do
    echo "-> $e: ${arrayOld[$e]}"
done
 
ich bräuchte mal 'nen Stupser
Ich auch :) Die Infos was Input ist und wo der Output landet sind duerftig :unsure:

Klar kann man auch Deinen String entsprechend splitten per cut oder jq prozessieren - je nachdem wie der Input aussieht.Dazu braucht es etwas mehr Info als einen Stupser ;)
 
  • Like
Reaktionen: peterhoffmann
@peterhoffmann Da keine weitere Antwort kam ... d.h. mein kleiner Codeschnipsel hat Dir als Stupser gereicht? Freut mich :)
 
  • Haha
Reaktionen: peterhoffmann
@framp
Der Codeschnipsel war gestern noch nicht da, als ich geschaut habe. Da war nur die Nachfrage nach mehr Input von dir. :unsure:🧐
Da ich heute in Ruhe gucken wollte, hatte ich das stehengelassen und wollte heute darauf eingehen.
Inzwischen hatte ich bei meinem Problem selbst einen Geistesblitz🌩️ und konnte mich selbst anstupsen. 🤪😌
Nun habe ich deinen Codeschnipsel (erst jetzt durch dein weiteres Posting) entdeckt. :oops:

Ich sage aber schon mal lieb Danke schön 🙏 für deine Mühe. Auch wenn wir irgendwie aneinander vorbeigeschrieben bzw. vorbeieditiert haben. :D;)🖖
 
  • Like
Reaktionen: framp

Additional post fields

 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat