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é.
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
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 –
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