Lo script Bash non può eseguire il comando


1

Ho il seguente script per eseguire il comando "xset led" su keypress ma non riesco a farlo funzionare perché il comando non viene effettivamente eseguito. Ecco la sceneggiatura:

#!/bin/bash
res=$(echo "$(xset q)" | tr ";" "Scroll Lock")
if [[ $res == *"Scroll Lock: on"* ]]; then
    echo $(xset led on)
else
    echo $(xset led off)
fi

Tuttavia quando eseguo echo $(xset led on)nella shell funziona. L'esecuzione dello script sopra genera una riga vuota, però.


Normalmente metterei le $resvirgolette per il confronto e userei un singolo segno di uguale, cioè if [ "$res" = *"Scroll Lock: on"* ]; then ... fi, ma sembra che il tuo script dovrebbe funzionare indipendentemente. Oh, ma trprenderà solo il primo personaggio Scroll Lock, non il tutto!
wvxvw,

Sono nuovo dello script bash ma $ res in qualche modo contiene ciò di cui ho bisogno: l'istruzione if-else funziona come previsto ma non so come attivare / disattivare il led xset in modo che la retroilluminazione della tastiera si accenda o si accenda rispettivamente.
Любомир Борисов

1
Beh, se questo è tutto ciò che serve, non c'è bisogno di chiamare xsetall'interno di una subshell, è possibile sostituire echo $(xset led on)con un semplice xset led oncon praticamente lo stesso effetto. Inoltre, potresti voler mettere set +xqualsiasi cosa nel tuo script per fare in modo che Bash registri ogni riga che esegue: in questo modo saprai quando qualcosa si rompe.
wvxvw,

Risposte:


0

Il problema era effettivamente nell'esecuzione del comando errato nell'istruzione if-else. Quando la retroilluminazione è accesa ho eseguito xset led acceso anziché spento. È stato un errore da principiante

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.