【问题标题】:get different datetime when shell script is executing执行 shell 脚本时获取不同的日期时间
【发布时间】:2015-05-08 08:15:31
【问题描述】:

我有 shell 脚本(ksh),它通过 SPOOL 从 oracle 表 x 将文件写入 xxxx unix 目录。

表 x 的列具有 seq_no。应该为不同的 seeq_no 生成文件。

例如

table x data

seq_no,a,b,c
1,2,3,4
1,5,6,7
1,8,9,10
2,1,2,3
2,4,5,6
2,7,8,9

文件名 = test_${STAMP}.csv

在这种情况下,应该生成两个具有不同 timstamp 的文件,因为我们在表 x 中有 2 个不同的 seq_no。

当脚本运行时,STAMP = date +%Y%m%d%H%M%S 变量将只保存一个值。所以我的第一个文件被秒写了。

请告诉我如何在 shell 脚本本身处于执行状态时找到当前日期时间。

【问题讨论】:

  • 那么你想要的输出是什么?日期从何而来?您是否希望脚本足够慢以至于在运行时时间会改变一秒?
  • Oracle 完成后可以使用 seq_no 分割输出文件。也许您想通过在文件名中添加 seq_no 来使文件名唯一?

标签: shell unix ksh


【解决方案1】:

如果我正确地回答了您的问题,您需要有单独的文件,每个文件只包含特定序列号的记录。

如果您可以更改方法,那么您可以尝试以下方法:

  1. 假脱机另一个文件,比如说seq_file,以查询不同的序列号。

     Content of seq_file:
    1
    2
    3
    5
    
  2. 迭代seq_filegrep "^${seq}," 的每一行并将输出重定向到所需的文件,也许您可​​以计算STAMP2 变量以用于最终文件名。

    while read seq
    do
       STAMP2=`date +%Y%m%d%H%M%S`
       grep "^${seq}," test_${STAMP}.csv >> ${seq}_$STAMP2
    done<seq_file
    

【讨论】:

  • 您可以跳过第 1 步并运行此 cat file | awk -F ',' '{print $1}' | sort -u&gt; seq_file
猜你喜欢
  • 2010-10-09
  • 2018-07-09
  • 1970-01-01
  • 2017-11-14
  • 2019-01-27
  • 1970-01-01
  • 2017-09-11
  • 2014-09-29
  • 2012-08-25
相关资源
最近更新 更多