Seite 1 von 1

bashscript variable als zahl übergeben~

Verfasst: Mittwoch 31. Januar 2024, 19:45
von country
probieren vor studieren....ich bin hier noch am rumprobieren und brauch mal kurz eine Starthilfe. Ich kapier nicht warum ich eine variable (id=1234) nicht in mein notify-send -r (replace-id) über geben kann. es funktioniert nur wenn ich erst eine Datei erstelle und dort die zah eintrage (id=$(cat pfad/zu/id)

ich will einfach eine id= an das notify-send übergeben ohne dafür eine datei zu erstellen. wie mache ich das?

Code: Alles auswählen

#!/bin/bash
x="rfkill list bluetooth | grep -i yes"
y=$(eval "$x" | awk '{print $3}')
#ermitteln der notify-send ID ; pfad zu id datei
id=$(cat /home/user/tools/id)
#evtl in id Datei manuel erstellen. Inhalt zB. 88
if [[ $y = yes ]]; then
        #notification und die id in id datei mit (-p) schreiben und mit (-r) ersetzen
        notify-send  -r "${id}"  "Bluetooth" "Aktiviert"
        rfkill unblock bluetooth
        echo "Bluetooth aktiviert"
   else
        rfkill block bluetooth
        echo "Bluetooth deaktiviert"
        notify-send  -r ${id}  "Bluetooth" "Deaktiviert"
fi

der Sinn der -r (replace) Option ist das die Meldung überschrieben wird und nicht meine Meldungen zumüllt...danke


edit:
meine nerven :-\ geht wohl nur so: ergänze Zeile 10 mit:

Code: Alles auswählen

        notify-send -p -r "${id}"  "Bluetooth" "Aktiviert" > /home/user/tools/id

Re: bashscript variable als zahl übergeben~

Verfasst: Mittwoch 31. Januar 2024, 20:57
von gosia
Hallo country,
country hat geschrieben: Mittwoch 31. Januar 2024, 19:45 ich will einfach eine id= an das notify-send übergeben ohne dafür eine datei zu erstellen
wahrscheinlich verstehe ich dein Problem falsch. Du willst eine Zahl (id) als Parameter übergeben?
warum nicht einfach das Skript so aufrufen:
rfkill.sh 123
und das im Skript abfragen:

Code: Alles auswählen

id=$1
in der einfachsten Form also so:

Code: Alles auswählen

#!/bin/bash
id=$1
x="rfkill list bluetooth | grep -i yes"
y=$(eval "$x" | awk '{print $3}')
#ermitteln der notify-send ID ; pfad zu id datei
#id=$(cat /home/user/tools/id)
echo ${id}  # hier nur zur Kontrolle

#evtl in id Datei manuel erstellen. Inhalt zB. 88
if [[ $y = yes ]]; then
        #notification und die id in id datei mit (-p) schreiben und mit (-r) ersetzen
        notify-send  -r "${id}"  "Bluetooth" "Aktiviert"
        rfkill unblock bluetooth
        echo "Bluetooth aktiviert"
   else
        rfkill block bluetooth
        echo "Bluetooth deaktiviert"
        notify-send  -r ${id}  "Bluetooth" "Deaktiviert"
fi
muss natürlich verbessert werden, wurde ein Parameter übergeben? Ist es auch eine Zahl? usw.

Re: bashscript variable als zahl übergeben~

Verfasst: Mittwoch 31. Januar 2024, 21:59
von country
ok danke wie du es vorgeschlagen hast funktioniert. Bei mir ist nur das Problem das bei mir im panel die Meldungen gezählt werden, lösche ich alle Benachrichtigung änder sich auch die notify (id) muss dann wieder eine höhere zahl angeben... wird mir aber etwas komplizierter als ich dachte... gibt es eine Desktop Benachrichtigung ohne das diese geloggt wird bzw im panel gar nicht erst auftaucht? aus einer Tasse kaffe bastel std. wurde jetzt schon fast eine Kanne Kaffee daraus >:D

Re: bashscript variable als zahl übergeben~

Verfasst: Mittwoch 31. Januar 2024, 23:25
von gosia
Hallo country,
mein Problem ist, dass wir offenbar zwei verschiedene notify-send haben.
Mein notify-send kennt und akzeptiert keine Option -r mit einer ID. Da reicht als Minimum
notify-send 'Titel' "noch eine Meldung"
und ich könnte das x-mal absetzen und es würden x Meldungen aufploppen, die nach einer Default-Zeit wieder verschwinden. Ich weiss also nicht, wozu deine ID dient.
Wenn Du aber eine ID brauchst, die sozusagen dann bei jeder neuen Meldung hochgezählt werden muss, dann würde ich das nicht mit einem Parameter machen, sondern ähnlich wie deine erste Idee mit einer Datei. Die musst Du aber nicht von Hand anlegen, sondern lass dies das Skript machen. Bin jetzt zu müde für korrekten Code, deshalb Pseudo-Code:

Code: Alles auswählen

ID=1
if ID-Datei existiert
then
	ID=(cat ID-Datei) + 1
fi
echo ID > ID-Datei
...
notify-send  -r "${ID}"  "Bluetooth" "Aktiviert"
...
so in diese Richtung. Ich hoffe, das Prinzip wird klar.

viele Grüsse gosia

Re: bashscript variable als zahl übergeben~

Verfasst: Donnerstag 1. Februar 2024, 11:24
von country
gosia hat geschrieben: Mittwoch 31. Januar 2024, 23:25 mein Problem ist, dass wir offenbar zwei verschiedene notify-send haben.
Doch probier mal Option -p heißt für Print (ID) so hab ich es bis her gemacht siehe Post #1 meine Ergänzungen bzw Edit.. wenn ich das exat so mache läuft das gut so.. aber ohne Datei bekomme ich das nicht hin. Weil wenn ich zb. Id=$(notify-send -p "Meldung") in der ersten If Abfrage starte geht sie mir in der else verloren. Dazu müsst ich mein Script Umdenken.

Re: bashscript variable als zahl übergeben~

Verfasst: Donnerstag 1. Februar 2024, 13:17
von gosia
Hallo country,
country hat geschrieben: Donnerstag 1. Februar 2024, 11:24 probier mal Option -p
Option -p oder -r? Aber egal, beides kennt mein notify-send nicht:

Code: Alles auswählen

notify-send -p 123 "Titel" "Meldung"
Unbekannte Option -p
ditto mit -r

Code: Alles auswählen

Unbekannte Option -r
taucht auch in der man-Page nicht auf.
Wahrscheinlich ist mein notify-send zu alt: Version 0.7.9
ehe ich mich uf die Suche mache, wozu braucht man diese ID? Was fange ich damit an, wenn ich weiss, die Meldung hat die ID 123?

viele Grüsse gosia

Re: bashscript variable als zahl übergeben~

Verfasst: Donnerstag 1. Februar 2024, 14:09
von country
Notify-send -p "meldung1" > Output zahl
Notify-send -r $zahl "meldung2" ersetzt die Meldung1

Ist das verständlich?

Edit heute Abend kann ich dir eine Zeile hier einfügen. Da kommt ne Fehlermeldung..

Re: bashscript variable als zahl übergeben~

Verfasst: Donnerstag 1. Februar 2024, 15:35
von gosia
Hallo country,
manchmal bin ich schwer von Begriff :(
country hat geschrieben: Donnerstag 1. Februar 2024, 14:09 Notify-send -p "meldung1" > Output zahl
Notify-send -r $zahl "meldung2" ersetzt die Meldung1
aha, ich verstehe hoffentlich, dann vielleicht so:

Code: Alles auswählen

zahl=$(notify-send -p "meldung1")
notify-send -r $zahl "meldung2"
viele Grüsse gosia

Re: bashscript variable als zahl übergeben~

Verfasst: Donnerstag 1. Februar 2024, 19:34
von country
Ich hab mich entschieden die Sache so zu lassen

Code: Alles auswählen

if [ $y = yes ]; then
	
        notify-send -p -r ${id}   "Bluetooth" "Aktiviert" > /home/user/tools/id
  	rfkill unblock bluetooth
else

        notify-send -r ${id}   "Bluetooth" "Detiviert"
        rfkill block bluetooth       
fi
danke @gosia vielen lieben dank von dir das du mir geholfen hast..