2017-01-12 10 views
2

長いプロセスの結果を継続的に表示するために、process substitution< <)を使用するbashスクリプトがあります。bashプロセスでプロンプトを表示するサブシェル

while read -r LINE 
do 
    something 
done < <(unbuffer my_long_running_script) 

私は、間にユーザー入力をお願いしたいと思います。

while read -r LINE 
do 
    something 
    ASK_THE_USER 
done < <(unbuffer my_long_running_script) 

Iは、基本select又はreadと試みたが、my_long_running_scriptの結果は依然としてに来ていると応答(従って無効)とします。

どうすればこの問題を解決できますか?

答えて

3

簡単な例:カスタムファイルディスクリプタ33<)への入力が端末から読みSTDIN自由去るよう

#!/usr/bin/env bash 

while read -u 3 -r line; do 
    echo "$line" # something 
    read -p "Continue?" -r response 
    [[ $response == 'y' ]] || break 
done 3< <(unbuffer my_long_running_script) 

は、プロセス置換(<(...))を送信します。

-u 3readをそのディスクリプタから読み取る。

関連する問題