【发布时间】:2016-07-27 12:33:06
【问题描述】:
在我的脚本中,我正在使用此命令创建一个临时目录
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。但它说该文件不存在。我做错了什么?
谢谢
【问题讨论】:
-
您是否将
cat包含在脚本中?从父 shell 调用它是行不通的,因为 $TMPDIR 只存在于运行脚本的子 shell 中。 -
是的,当然——就在脚本中的 awk 之后
-
awk '....' $TMPDIR/data将在$TMPDIR/data上运行并将输出发送到标准输出。因此awk所做的任何更改在$TMPDIR/data中均不可用。那是你的意图吗?似乎缺少了什么。您能否显示脚本中从创建$TMPDIR/data到您在脚本中执行cat $TMPDIR/data的所有行?我假设awk生成了一个错误,因为它找不到文件,根据你所说的但你没有说出错误消息的确切内容。 -
另外,$DATA 是文件名还是文件内容?
-
lurker - 我已经在我的问题中编辑了 awk 脚本,你肯定是对的 - 我可以通过 awking 原始数据文件并将其打印到某个临时文件来修复它吗?