2015-11-06 4 views
0

мне нужна помощь в отправке переменных оболочек в PSQL -c запроса внутри .sh:Использование переменной оболочки в команде Psql

#!/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

Смежные вопросы