ユーザーが「less」を終了するまでスクリプトの実行を一時停止します。

ユーザーが「less」を終了するまでスクリプトの実行を一時停止します。

ターゲットlessコンテンツ(変数から)を入力し、ユーザーにコンテンツをファイル(たとえば.recovered_object)に保存する必要があるかどうかを尋ねます。その後ユーザーがログアウトしますless

私のスクリプトから抜粋したものは次のとおりです。

...
    # Show each blob until one is chosen
    counter=1
    while IFS='' read sha; do
        printf "Showing blob %d of %d" "$counter" "$BLOB_COUNT"
        contents=$(git show ${sha})
        ${PAGER:-less} ${contents}
        if read -q '?Save and quit (y/n) ?'; then
            echo "$contents" > .recovered_object
            exit 0
        else
            ((counter++))
        fi
    done <<< ${DANGLING_BLOBS_SHA}

    exit 0

現時点では、キーを押すと(除くy)次のファイルに移動しますが、これにより、ユーザーが上にスクロール(k)、下にスクロール()したり、他のキーマップをj使用するのを防ぐことができます。less

ifこのブロックがすぐに実行されるのをどのように防ぐことができますか?


PS:私は一般的にシェルスクリプトに初めて触れる人なので、どんなアドバイスでも大歓迎です。

PSS:使用していますが、希望するユーザーエクスペリエンスを達成するのに役立つ場合は、に切り替えることにzsh反対しません。bash

ベストアンサー1

-fフラグ(または)と一緒にプロセスオーバーライドを使用するとうまくいく--forceようです。

${PAGER:-less} -f <(echo "$contents")

おすすめ記事