linux - 将特定编号的 Bash 文件描述符流式传输到变量中

标签 linux bash shell unix sh

我正在尝试将特定编号的文件描述符流式传输到 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/

相关文章:

c++ - QProcess -> 在 Linux 上从 sftp 读取标准输出

linux - 程序在哪一行运行并带有回溯信息?

bash - 持久 AWK 程序

linux - bash 中的脚本错误

bash - Bash subshel​​l用ssh命令非常奇怪的行为

shell - Sed/Awk 在文件中搜索和替换/插入文本

c - Linux 在使用 PPID 1 重新启动时不会清理资源(套接字)

java - 从windows导出war文件并将其添加到ubuntu webapps

python - 是否可以在 CLI 中修改 json 对象?

linux - bash 中的备份脚本