2015-11-06 61 views
0

我需要一些帮助到发送一个shell变量的PSQL -c查询.SH内:使用shell变量

#!/bin/sh 

    timeStamp=`date +%s` 
    timeStampLast24H= expr $timeStamp - 86400 

    psql -U postgres -c "COPY (SELECT atribute FROM table WHERE ts>$timeStampLast24H) TO stdout DELIMITER ';' CSV HEADER; > (...)" 

我这样做是为了在最后一天,因为得到的只有行创建数据库的人使用rectimestamp作为整数,并且来自postgres的普通函数不起作用(例如now()-interval 'Given_Period')。

更改“$ timeStampLast24H”的东西,使postgres了解一个整数,完全对应于过去24小时内的时间戳,对我来说也是可以的。如果我在其位置使用确切的时间戳,那么查询效果很好。

谢谢。

回答

0

这种分配

timeStampLast24H= expr $timeStamp - 86400 

不正确。

注意它与这项任务有什么不同?

timeStamp=`date +%s` 

您的=后添加一个空格,并留出了反引号或$()包装。

修复这些问题,您的问题可能会消失。因为它是你没有给你的查询价值。

+0

但我可以通过回显正常打印timeStampLast24H! – Minish

+0

现在在你的文章中的代码,你不能。请参阅http://ideone.com/wx7H5f或者如果可以的话,它在代码之前有一个值。您可能会认为在“分配”行正在工作之后有一个'echo',但实际上是输出它的'expr'调用。 –

+0

那么它应该是'timeStampLast24H = expr $ timeStamp-86400'吗? – Minish