プログラムを停止するには、Ctrl + Cを数回使用してください。

プログラムを停止するには、Ctrl + Cを数回使用してください。

別のbashスクリプト(23.sh)を実行する「デフォルト」bashスクリプトがあります。デフォルトのスクリプトにはCtrl+Cジョブをキャプチャし、パスワードを要求する機能があります。パスワードを正しく入力すると、基本ファイルが終了します。

しかし、問題があります。ユーザーがCtrl+をCすばやく連続して2回入力すると、スクリプトは停止します(以下のスクリプトの説明を参照)。

この問題にどのように対処する必要がありますか?本質的に、私はctrl_c()関数が再帰的であり、ユーザーが関数内でCtrl+を使用しているときにCまだ機能したいと思います。私はずっと前(約10年前)関数の再帰が次のように言われたことを覚えています。悪い考え! 解決策はありますか?

#!/bin/bash
# This is the main file that runs data collection code 23.sh in an infinite loop

function ctrl_c() {
    clear
    echo "** Trapped CTRL-C0"
    sleep 1s
    echo "'''''''''''''''''''''''''''''''''''''''"
    echo "Enter Admin password and click [ENTER]: "
    # When user enters ctrl+c in here the program freezes up
    read passPhrase
    if [ $passPhrase == "pass" ]; then
        echo "Password correct"

        for i in `seq 1 5`; do
            sleep 1
            echo -n "."
            # pkill 23.sh
            # pkill main.sh
        done
        pkill main.sh
    else
        echo "Incorrect pass phrase.  'Service Selection' screen will in 5 seconds load"
        for i in `seq 1 5`; do
            sleep 1
            echo -n "."
        done
        # ./23.sh
    fi
}

trap ctrl_c INT

while :
do
    ./23.sh
done

ベストアンサー1

おすすめ記事