小编Par*_*art的帖子

Bash:将管道的输出分配给变量

我正在尝试将管道的输出转换为变量。我尝试了以下几件事:

echo foo | myvar=$(</dev/stdin)
echo foo | myvar=$(cat)
echo foo | myvar=$(tee)
Run Code Online (Sandbox Code Playgroud)

但是$myvar是空的。

我不想做:

myvar=$(echo foo)
Run Code Online (Sandbox Code Playgroud)

因为我不想生成子shell。

有任何想法吗?

编辑:我不想生成子shell,因为管道之前的命令需要编辑全局变量,而这在子shell中是做不到的。它可以?的echo东西只是为了简化。它更像是:

complex_function | myvar=$(</dev/stdin)
Run Code Online (Sandbox Code Playgroud)

我不明白,为什么这不起作用。这例如:

complex_function | echo $(</dev/stdin)
Run Code Online (Sandbox Code Playgroud)

bash pipe stdin

45
推荐指数
3
解决办法
12万
查看次数

标签 统计

bash ×1

pipe ×1

stdin ×1