使用read builtin命令在子shell中从父stdin读取

时间:2016-03-25 23:19:17

标签: bash shell multiprocessing stdin

我的脚本正在启动一个subshel​​l / background命令来读取输入然后做更多的工作:

#!/bin/bash

(
while true; do
    read -u 0 -r -e -p "test_rl> " line || break
    echo "line: ${line}"
done
) &

sleep 3600 # more work

有了上述内容,我甚至得不到提示。如果我在启动子shell之前exec 3>&0然后从描述符3(-u 3)读取,那么我至少得到提示,但是read命令仍然没有得到我键入的任何输入。

如何从终端(父&#stdin文件描述符)中正确读取内置读取?

1 个答案:

答案 0 :(得分:1)

  

如何从内核正确读取内置读取内容   (parent的stdin文件描述符)?

您可能想尝试这个(使用父级的文件描述符):

#!/bin/bash

(
while true; do
    read -u 0 -r -e -p "test_rl> " line || break
    echo "line: ${line}"
done
)<&0 >&1 &

sleep 3600 # more work