スクリプトが終了する前にコマンドを実行する

スクリプトが終了する前にコマンドを実行する

bash スクリプトを使用してテストしているハードウェアがいくつかあります。

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

ループが終了する前に Ctrl+C を押すと、ピン 65 は設定解除されません。(後で設定解除することはできます) ? を押した後にプロセスを実行する方法はありますか? たとえば、 Ctrl+C が押されたときにスクリプトが終了する前にCtrl+Cスクリプトを実行する方法はありますか?tshwctl --clsdio=65

答え1

シェバンの後に以下を使用できます#!/bin/bash:

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

--clsdioまたは、下部のスクリプトを削除して以下を使用することもできます。

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

EXITすべてのユースケースでコマンドを実行する

http://mywiki.wooledge.org/SignalTrap

関連情報