【问题标题】:Bash - work with a file in the temp folderBash - 使用临时文件夹中的文件
【发布时间】: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 原始数据文件并将其打印到某个临时文件来修复它吗?

标签: bash awk gnuplot temp


【解决方案1】:

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

虽然看起来很愚蠢,但潜伏者是对的,我忘记了 将 awk 输出到文件中 我要感谢大家的支持 cmets – Jesse_Pinkman

【讨论】:

    猜你喜欢
    • 2011-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-30
    • 1970-01-01
    • 1970-01-01
    • 2018-01-18
    • 2012-06-25
    相关资源
    最近更新 更多