如何将查询结果分配给shell变量

时间:2014-06-16 14:02:10

标签: sql shell unix sh variable-assignment

我有一个返回日期的SQL查询。 我从shell脚本调用此查询,并希望将此值分配给名为datestart的变量(稍后再使用)。这是我的代码。如果没有datestart赋值,查询就可以正常工作。

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

但结果如下:

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

我不知道我应该在哪里插入那个结束括号。任何提示都表示赞赏。

1 个答案:

答案 0 :(得分:1)

您需要对$(...)使用BASHsh使用``,而不是变量赋值中的括号。

试试这个:

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