我试图了解 bashread
命令如何在幕后工作。鉴于它期望其输入来自标准输入,我惊讶地发现管道输入没有按预期工作。例如
### Pipe scenario
echo "1 2 3" | read -r one two three
echo "one: $one, two: $two, three: $three"
# output: 'one: , two: , three:'
### Herestring scenario
read -r one two three <<< "1 2 3"
echo "one: $one, two: $two, three: $three"
# output: 'one: 1, two: 2, three: 3'
有人能解释一下上述两种提供输入的方式有什么不同吗(从读取命令的角度来看)?
编辑回应评论:
我不想知道“如何通过管道传递输入”,比如评论中的链接问题。我知道该怎么做(例如,我可以使用字符串!)。
我的问题是,在这两种情况下,使 read 行为不同的潜在机制是什么?