Du bist nicht angemeldet.

#1 19.01.2020 16:04:03

Dings
Mitglied

[gelöst] bashscript Variable wird nicht gefüllt

TL;DR:
Es war ein Typo
-------------------------8<-----------------------------------------------------------------------------
(Ich bin ziemlich ahnungslos, wenn es ums Programmieren geht, das mal vorweg.)

Ich möchte das die Tastaturbeleuchtung abgeschaltet wird, wenn das Display gesperrt wird.
Dafür schreibe ich mir ein Bash Script.

Ich fülle eine Variable (kbdstate) mit dem aktuellen Status der Tastaturbeleuchtung, entweder 0 oder 1.

Ich habe eine Funktion (isiton) die guckt, ob der Status > 0 ist.
Ist er das, wird er = 0 gesetzt, damit die Tastaturbeleuchtung ausgeschaltet ist.

dbus-monitor guckt, ob die session gelockt wird.
Wird sie das, wird die Funktion (isiton) ausgeführt.

Anderenfalls passiert nichts.

#!/bin/bash

kdbstate=$(cat /sys/devices/platform/tuxedo_keyboard/state)

isiton() {
    if [ "$kbdstate" -gt 0 ]; then
                echo 0 > /sys/devices/platform/tuxedo_keyboard/state
    fi
}

dbus-monitor --system "type='signal',interface='org.freedesktop.login1.Session',member='Lock'" | \
    (
  while read X; do
    if [[ "$X" =~ Lock ]]; then
        isiton
    fi
  done
)

Führe ich das Script aus, passiert erstmal garnichts. So wie geplant.
Sperre ich dann das Display, bekomme ich diese Fehlermeldung:

my_scripts/screenlock_kbdoff.sh: line 4: [: : integer expression expected

Die Variable bleibt leer. Ich verstehe nicht warum, bzw. weiss nicht, was ich falsch mache.
Fülle ich die Variable händisch im Terminal und lasse sie mir anschließend ausgeben, funktioniert es so wie zu erwarten.

# kdbstate=$(cat /sys/devices/platform/tuxedo_keyboard/state)
# echo $kbdstate
# 1
[oder eben 0, wenn die Tastaturbeleuchtung aus ist]

Die dbus-monitor Geschichte habe ich hier hier
ausgegraben, als ich herausfinden wollte, woher ich überhaupt weiss, dass das Display gesperrt ist.

Wie bekomme ich den Status der Tastaturbeleuchtung in meine Variable?

Beitrag geändert von Dings (19.01.2020 22:18:12)

Offline

#2 19.01.2020 18:51:33

wirr
Mitglied

Re: [gelöst] bashscript Variable wird nicht gefüllt

Da gibt es ein Typo:
kdbstate
kbdstate

Offline

#3 19.01.2020 19:01:41

Dings
Mitglied

Re: [gelöst] bashscript Variable wird nicht gefüllt

wirr schrieb:

Da gibt es ein Typo:
kdbstate
kbdstate

Alter Schwede. DANKE!

Ich habe da stundenlang draufgeglotzt und es einfach nicht gesehen.

Offline

#4 20.01.2020 15:27:58

wirr
Mitglied

Re: [gelöst] bashscript Variable wird nicht gefüllt

Das ist mir einmal bei einer Prüfung passiert smile

Es hilft, die Suchfunktion zu benutzen, wenn die Variabel leer bleibt oder die Funktion einfach nicht gefunden wird. Im vim gibt es z.B. den * Befehl, welcher nach dem Wort unter dem Cursor sucht.

Offline

#5 20.01.2020 23:33:44

Dings
Mitglied

Re: [gelöst] bashscript Variable wird nicht gefüllt

wirr schrieb:

… Im vim gibt es z.B. den * Befehl, welcher nach dem Wort unter dem Cursor sucht.

Super, kannte ich auch noch nicht. Hat sich ja in jeder Hinsicht gelohnt, mal unterm Stein herauszugucken und hier zu fragen.
Danke Dir.

Offline

Schnellantwort auf dieses Thema

Schreibe deinen Beitrag und versende ihn
Deine Antwort

Fußzeile des Forums