「Enter」キーなしでユーザー入力をキャプチャ

「Enter」キーなしでユーザー入力をキャプチャ

私は次のようなことをします。

これらのスクリプトはユーザーにパラメータを求めるメッセージを表示し、最終的にそのパラメータに基づいて特定のコマンドを実行します。 (最初にファイル名の入力を求め、引数の入力を求めるスクリプトを想像してくださいchmod。)

問題は、スクリプトが特定のキーシーケンスで終了する必要があることです(たとえば、ユーザーが「Ctrl-」を入力せずに「halt」を入力した場合などC)。

ベストアンサー1

readwithを使用して、-n 1文字ごとに読み書きした文字列を作成できます。その後、各キャラクターが登場したときに何をするかを決定できます。

val=""
while read -n 1 char; do
    if [[ $char = "" ]]; then
        printf 'Got an enter and the string is %s' "$val"
        # do whatever else you want with it here
        val="" # reset it to get the next param
    else
        val="$val$char" # append input
    fi
    if [[ $val = "halt" ]]; then
        exit
    fi
done

おすすめ記事