2015-11-06 101 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