Consulta Postgresql dentro de um script bash

1

Estamos com um problema com uma consulta bash postgresql. A saída da consulta do script bash adiciona cotas adicionais em torno da data. Por favor, você pode me ajudar a consertar isso?!

Script:

#!/bin/sh

lastmonth=$(date -d "-1 month -$(($(date +%d)-1)) days" +%Y-%m-%d)
thismonth=$(date -d '-1 month -12 days' +%Y-%m-%d)

sudo -u postgres psql -d linetest_uptime -A -o /tmp/linetest_$(date +%Y-%m-%d).txt -c "select t.*, ip,port from line_test t,service_address s where '$thismonth' <= start and start < '$lastmonth' and service_address_id=s.id order by t.start,status desc" >/dev/null 2>&1 && sudo mv /tmp/linetest_$(date +%Y-%m-%d).txt /reporting/line_test_data/ && sudo chown $USER:$USER /reporting/line_test_data/linetest_$(date +%Y-%m-%d).txt

A saída é:

sudo -u postgres psql -d linetest_watchdog -A -o /tmp/linetest_2014-03-13.txt -c 'select t.*, ip,port from line_test t,service_address s where '\''2014-02-01'\'' <= start and start < '\''2014-02-01'\'' and service_address_id=s.id order by t.start,status desc

Precisamos remover o '\' '\' que agora está sendo agrupado em torno da variável date.

    
por GuruFrog 13.03.2014 / 06:17

1 resposta

0

Isso não parece ser a saída de seus comandos - é alguma saída de depuração?

O que você tem parece correto, pois pode ser alimentado no shell e dar o que você pediu. Observe que 'aaa'\''bbb' é idêntico a "aaa'bbb" !

Nota: suas variáveis parecem um pouco complicadas e você repete $(date +%Y-%m-%d) ; o seguinte pode ajudar:

lastmonth=$(date -d "-1 month" +%Y-%m-01)
thismonth=$(date +%Y-%m-01)
today=$(date +%Y-%m-%d)

e a consulta SQL pode ser mais idiomática como ... where date between '$lastmonth' and '$thismonth' ... .

    
por 26.08.2015 / 18:30