我有一个使用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)
我尝试使用基本的select
或read
,但my_long_running_script
的结果仍然存在并被视为回复(因此无效)。
我该如何解决这个问题?
答案 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)
将进程替换(<(...)
)作为输入发送到自定义文件描述符3
(3<
),使得stdin可以自由地从终端读取。
-u 3
使read
从该描述符中读取。