无法通过管道从 echo 到 bash 内置读取?

无法通过管道从 echo 到 bash 内置读取?

假设我有一个循环,通过read.我希望将原始行和该行分成不同的变量,这样read效果很好。但是,我似乎无法回显变量,将其通过管道传递给read,并填充变量。这是一个基本案例:

echo "a b c d e f g" | read line
echo "Read obtained: $line"

结果:

Read obtained:

我怎样才能让read做我想做的事?或者:为什么我要求 read 这样做是错误的,我应该做什么?

答案1

您可以read按如下方式判断从管道中读取的内容;原来的@yardena 的回答

echo "a b c d e f g" | { read line; echo line=$line; }

答案2

问题在于范围。变量在管道创建的子 shell 之外没有值。相反:

while read line; do echo "read obtained: ${line}"; done < <(echo "a b c d e f g")

根据需要使用循环。如果你想用它来处理文本,那就这么做吧。 -C

相关内容