gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:36:26 25 4
gpt4 key购买 nike

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com