2014-01-24 71 views
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 

这是为什么?

回答

3

cat连接在一起,输出文件 - 我想你在你的第二个语句要echo

echo "$(pull_data)" | while read a b c d; do 
+0

相比之下,'猫<<<“$(pull_data)” | ...应该可以工作,因为它允许'cat'从标准输入中读取,这是从'pull_data'命令提供的数据。 'cat <<(pull_data)| ...'也可以通过不同的机制出于同样的原因,即过程替换而不是这里的字符串。 – chepner

+1

此外,在这种情况下'echo'是不必要的,因为您可以简单地管道'pull_data | ......直接。 – chepner

2

cat用来处理文件。在这种情况下你没有文件。如果你并不需要保存在data.csv你的数据,你应该能够管直接到循环:

echo "$(pull_data)" | while read a b c d; do