在bash进程中提示用户替换

时间:2017-01-12 09:48:42

标签: bash

我有一个使用process substitution< <)的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)

我尝试使用基本的selectread,但my_long_running_script的结果仍然存在并被视为回复(因此无效)。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:3)

一个简单的例子:

#!/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)

将进程替换(<(...))作为输入发送到自定义文件描述符33<),使得stdin可以自由地从终端读取。

-u 3使read从该描述符中读取。