我正在尝试将特定编号的文件描述符流式传输到 Bash 中的变量中。我可以使用以下函数从正常标准执行此操作,但是,如何从特定文件描述符执行此操作。如果我使用相同的方法,我需要将 FD 定向到子 shell 中。我总是可以逐行阅读,但是,如果我可以连续阅读,那将是非常可取的。
我的函数是:
streamStdInTo ()
{
local STORE_INvar="${1}" ; shift
printf -v "${STORE_INvar}" '%s' "$( cat - )"
}
是的,我知道这不会正常工作,因为管道的末端会丢失(由于它在子 shell 中执行),但是,无论是在 Bash 4 set +米; shopt -s lastpipe
在与开始相同的 shell 中执行管道结束的方法,或者通过不同的文件描述符定向到此,我希望能够使用它。
所以,我的问题是,如何使用上面的文件描述符与正常文件描述符不同?
最佳答案
您的意思并不完全清楚,但也许您正在寻找类似的东西:
cat - <&4 # read from fd 4
或者,只需使用重定向调用您当前的函数:
streamStdInTo foo <&4
编辑: 解决评论中的一些问题,您可以使用 fifo:
#!/bin/bash
trap 'rm -f $f' 0
f=$(mktemp xxx)
rm $f
mkfifo $f
echo foo > $f &
exec 4< $f
cat - <&4
wait
关于linux - 将特定编号的 Bash 文件描述符流式传输到变量中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30052294/