bashscript variable als zahl übergeben~

Unser Off Topic Bereich. Alles was nicht zu Manjaro Linux gehört findet hier seinen Platz!
Antworten
Benutzeravatar

Themen Author
country
Forum Held
Forum Held
Beiträge: 1117
Registriert: Samstag 16. Oktober 2021, 02:12
CPU: Ryzen 7 3700X
GPU: RTX 3060Ti
Kernel: up-to-date
Desktop-Variante: Cinnamon
GPU Treiber: RTX 3060Ti
Hat sich bedankt: 122 Mal
Danksagung erhalten: 227 Mal

bashscript variable als zahl übergeben~

#1

Beitrag 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
Benutzeravatar

gosia
Forum Held
Forum Held
Beiträge: 2255
Registriert: Dienstag 24. Mai 2016, 13:33
CPU: Intel i5-3210M
GPU: Intel HD 4000
Kernel: 4.19
Desktop-Variante: Openbox
GPU Treiber: i915
Hat sich bedankt: 20 Mal
Danksagung erhalten: 509 Mal

Re: bashscript variable als zahl übergeben~

#2

Beitrag 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: 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.
Benutzeravatar

Themen Author
country
Forum Held
Forum Held
Beiträge: 1117
Registriert: Samstag 16. Oktober 2021, 02:12
CPU: Ryzen 7 3700X
GPU: RTX 3060Ti
Kernel: up-to-date
Desktop-Variante: Cinnamon
GPU Treiber: RTX 3060Ti
Hat sich bedankt: 122 Mal
Danksagung erhalten: 227 Mal

Re: bashscript variable als zahl übergeben~

#3

Beitrag 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
Benutzeravatar

gosia
Forum Held
Forum Held
Beiträge: 2255
Registriert: Dienstag 24. Mai 2016, 13:33
CPU: Intel i5-3210M
GPU: Intel HD 4000
Kernel: 4.19
Desktop-Variante: Openbox
GPU Treiber: i915
Hat sich bedankt: 20 Mal
Danksagung erhalten: 509 Mal

Re: bashscript variable als zahl übergeben~

#4

Beitrag 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
Benutzeravatar

Themen Author
country
Forum Held
Forum Held
Beiträge: 1117
Registriert: Samstag 16. Oktober 2021, 02:12
CPU: Ryzen 7 3700X
GPU: RTX 3060Ti
Kernel: up-to-date
Desktop-Variante: Cinnamon
GPU Treiber: RTX 3060Ti
Hat sich bedankt: 122 Mal
Danksagung erhalten: 227 Mal

Re: bashscript variable als zahl übergeben~

#5

Beitrag 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.
Benutzeravatar

gosia
Forum Held
Forum Held
Beiträge: 2255
Registriert: Dienstag 24. Mai 2016, 13:33
CPU: Intel i5-3210M
GPU: Intel HD 4000
Kernel: 4.19
Desktop-Variante: Openbox
GPU Treiber: i915
Hat sich bedankt: 20 Mal
Danksagung erhalten: 509 Mal

Re: bashscript variable als zahl übergeben~

#6

Beitrag 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
Benutzeravatar

Themen Author
country
Forum Held
Forum Held
Beiträge: 1117
Registriert: Samstag 16. Oktober 2021, 02:12
CPU: Ryzen 7 3700X
GPU: RTX 3060Ti
Kernel: up-to-date
Desktop-Variante: Cinnamon
GPU Treiber: RTX 3060Ti
Hat sich bedankt: 122 Mal
Danksagung erhalten: 227 Mal

Re: bashscript variable als zahl übergeben~

#7

Beitrag 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..
Benutzeravatar

gosia
Forum Held
Forum Held
Beiträge: 2255
Registriert: Dienstag 24. Mai 2016, 13:33
CPU: Intel i5-3210M
GPU: Intel HD 4000
Kernel: 4.19
Desktop-Variante: Openbox
GPU Treiber: i915
Hat sich bedankt: 20 Mal
Danksagung erhalten: 509 Mal

Re: bashscript variable als zahl übergeben~

#8

Beitrag 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
Benutzeravatar

Themen Author
country
Forum Held
Forum Held
Beiträge: 1117
Registriert: Samstag 16. Oktober 2021, 02:12
CPU: Ryzen 7 3700X
GPU: RTX 3060Ti
Kernel: up-to-date
Desktop-Variante: Cinnamon
GPU Treiber: RTX 3060Ti
Hat sich bedankt: 122 Mal
Danksagung erhalten: 227 Mal

Re: bashscript variable als zahl übergeben~

#9

Beitrag 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..
Antworten