2016-04-06 24 views
2

在我的剧本我创建一个临时目录中使用此命令巴什 - 在Temp文件夹与文件工作

TMPDIR=$(mktemp -d) 

后来当我想创建一个文件有我用(与$DATA是我的源数据文件)

touch $TMPDIR/data 
echo "$DATA" > $TMPDIR/data 

命令。稍后,我使用awk通过以下语法更改数据:

awk ' 
    { a[i++]= ($0 * '$factor') } 
    END{ 
    { for (j=0;j < i;j++) print a[j] } 
    } 
' ${TMPDIR}/data 

然后我使用gnuplot来绘制它。但是gnuplot说有一些错误,所以我想用cat打印$TMPDIR/data。但它说该文件不存在。我做错了什么?

谢谢

+0

您是否在脚本中包含“cat”?从父shell调用它将不起作用,因为$ TMPDIR仅存在于运行脚本的子shell中。 – choroba

+0

是的,当然 - 在脚本的awk之后 –

+3

'awk'....'$ TMPDIR/data'将在'$ TMPDIR/data'上运行,并将输出发送到标准输出。所以'awk'的任何修改在'$ TMPDIR/data'中都不可用。那是你的意图吗?它似乎缺少一些东西。你可以在你创建'$ TMPDIR/data'的地方显示你的脚本中的所有行吗?你可以在脚本中执行'cat $ TMPDIR/data'?我假设'awk'产生一个错误,因为它找不到该文件,根据你所说的内容,但你没有说错误信息是什么。 – lurker

回答

0

我正在阅读未回答的问题,发现这一个。稍后阅读所有评论意识到这是评论中已经回答的问题之一。这里的问题是用户忘记了将awk命令的输出重定向到一个文件。为了避免他人阅读这些评论并得出相同的结论,我发布这个答案。这里是一个问题答案的评论:

哑巴,因为它似乎是,潜伏者是对的,我忘了 输出AWK到我要感谢大家的 意见的文件 - Jesse_Pinkman

相关问题