Befehl ausführen, bevor das Skript beendet wird

Befehl ausführen, bevor das Skript beendet wird

Ich habe einige Hardware, die ich mit einem Bash-Skript teste.

#!/bin/bash
tshwctl --setdio=65
for i in $(seq 0 1000)
do
 ./adc1
sleep 1
done
tshwctl --clrdio=65

Wenn ich Strg+C drücke, bevor die Schleife beendet ist, wird Pin 65 nicht deaktiviert. (Ich kann ihn natürlich später deaktivieren.) Gibt es eine Möglichkeit, einen Prozess nach dem Drücken auszuführen Ctrl+C? Zum Beispiel: Gibt es eine Möglichkeit, das Skript auszuführen, tshwctl --clsdio=65 bevor es beendet wird, wenn Strg+C gedrückt wird?

Antwort1

Sie können nach dem Shebang Folgendes verwenden #!/bin/bash:

trap 'tshwctl --clsdio=65 &>/dev/null' 1 2 3 15

oder Sie können --clsdiodas Skript unten entfernen und Folgendes verwenden:

trap 'tshwctl --clsdio=65 &>/dev/null' EXIT

EXITum den Befehl in allen Anwendungsfällen auszuführen

http://mywiki.wooledge.org/SignalTrap

verwandte Informationen