2014-06-16 6 views
1

J'ai une requête sql qui renvoie une date. J'appelle cette requête d'un script shell et je voudrais assigner cette valeur à la variable appelée datestart (et l'utiliser plus tard). Voici mon code. Sans l'affectation de datestart, la requête fonctionne correctement.comment affecter un résultat de requête à une variable shell

#!/bin/sh 
firstname="-Upgsql" 
dbname="statcoll" 
portname="-p5438" 
datestart=(psql $firstname $portname $dbname<< EOF 
SELECT MIN(latestrefdate) FROM (SELECT MAX(referencedate) AS latestrefdate FROM statistics WHERE transactionname IN(SELECT DISTINCT transactionname FROM statistics WHERE platform = 'Smarties')GROUP BY transactionname) as earliest; 
EOF 
) 
echo $datestart 

mais le résultat est le suivant:

Syntax error: word unexpected (expecting ")"). 

Je ne sais pas où dois-je insérer ce support de fermeture. Tout indice est apprécié.

Répondre

1

au lieu des crochets dans l'affectation des variables que vous devez utiliser pour $(...)BASH ou `` ... pour sh.

Essayez ceci:

#!/bin/sh 

firstname="-Upgsql" 
dbname="statcoll" 
portname="-p5438" 
datestart=`psql -t --pset="footer=off" --user="$firstname" --port="$portname" -d "$dbname"<<EOF 
SELECT MIN(latestrefdate) FROM (SELECT MAX(referencedate) AS latestrefdate FROM statistics WHERE transactionname IN (SELECT DISTINCT transactionname FROM statistics WHERE platform = 'Smarties') GROUP BY transactionname) as earliest; 
EOF 
` 
echo "$datestart" 
+0

Je recommande vraiment '$ (..)' sur des accents graves, ne fonctionnent pas contre-apostrophes du tout lorsqu'ils sont utilisés à l'intérieur de l'autre, alors que les expressions imbriquées sont très bien en utilisant '$ (. .) ' – scragar

+0

oui, il a presque résolu mon problème. Au lieu de la valeur de date réelle, le contenu de l'en-tête est affecté à la variable. Donc j'attends quelque chose comme ça '2014-05-23' mais j'ai obtenu 'min ----- (1 row)' à la place –

+0

Cela est dû au texte de l'en-tête et du pied de colonne. Voir [ce Q & A] (http://dba.stackexchange.com/questions/24215/how-to-turn-off-header-only-in-psql-postgresql) – anubhava

Questions connexes