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.