【发布时间】:2019-02-05 12:08:22
【问题描述】:
在使用while read 循环迭代多个值时,我观察到一种奇怪的行为。怪癖是当我使用heredoc将代码传递到Docker容器时,正在读取的变量总是空的:
$ docker run --rm -i ubuntu:18.04 << EOF
echo -e "123\n456"|while read f; do echo "Value: $f"; done
EOF
Value:
Value:
使用heredoc 变量重写的相同操作按预期工作:
$ docker run --rm -i ubuntu:18.04 <<< 'echo -e "123\n456"|while read f; do echo "Value: $f"; done'
Value: 123
Value: 456
如果我以交互方式运行它:
$ docker run --rm -it ubuntu:18.04 bash
root@0d71388ad90d:/# echo -e "123\n456"|while read f; do echo "Value: $f"; done
Value: 123
Value: 456
我在这里错过了什么?
【问题讨论】: