我的脚本正在启动一个subshell / 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文件描述符)中正确读取内置读取?
答案 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