0
我已经编写了一个脚本来自动执行例程,但无法理解下面两个块之间的差异。第一件作品,第二件作品不。这里有什么区别?
这工作:
echo "$(pull_data)" > data.csv
cat data.csv | while read a b c d; do
这不起作用:
cat "$(pull_data)" | while read a b c d; do
这是为什么?
我已经编写了一个脚本来自动执行例程,但无法理解下面两个块之间的差异。第一件作品,第二件作品不。这里有什么区别?
这工作:
echo "$(pull_data)" > data.csv
cat data.csv | while read a b c d; do
这不起作用:
cat "$(pull_data)" | while read a b c d; do
这是为什么?
cat
连接在一起,输出文件 - 我想你在你的第二个语句要echo
:
echo "$(pull_data)" | while read a b c d; do
cat
用来处理文件。在这种情况下你没有文件。如果你并不需要保存在data.csv
你的数据,你应该能够管直接到循环:
echo "$(pull_data)" | while read a b c d; do
相比之下,'猫<<<“$(pull_data)” | ...应该可以工作,因为它允许'cat'从标准输入中读取,这是从'pull_data'命令提供的数据。 'cat <<(pull_data)| ...'也可以通过不同的机制出于同样的原因,即过程替换而不是这里的字符串。 – chepner
此外,在这种情况下'echo'是不必要的,因为您可以简单地管道'pull_data | ......直接。 – chepner