假设我有一个循环,通过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