如何使用su-c和bash脚本引用psql语句?

如何使用su-c和bash脚本引用psql语句?,bash,postgresql,psql,Bash,Postgresql,Psql,我正在bash脚本中尝试以下语句: su -c "psql -d myDB-c 'SELECT count(*) AS number, date_trunc('day'::text, users.registerdate) AS registerdate FROM users;'" postgres 问题是需要引用的'day'参数,但在引号中它不起作用 您似乎试图将单引号括在单引号中,但您当然不能这样做'this'和'that'解析为'this',后跟一个不带引号的和,后跟'that',而不

我正在bash脚本中尝试以下语句:

su -c  "psql -d myDB-c 'SELECT count(*) AS number, date_trunc('day'::text, users.registerdate) AS registerdate FROM users;'" postgres

问题是需要引用的
'day'
参数,但在引号中它不起作用

您似乎试图将单引号括在单引号中,但您当然不能这样做
'this'和'that'
解析为
'this'
,后跟一个不带引号的
,后跟
'that'
,而不是一个带引号的字符串
this'和'that

通常的解决方案是将单引号用双引号括起来,反之亦然,因此如果在引号内替换双引号是可以接受的,则
“this”和“that”
“this”和“that”
;但在这里,你已经拥有了这两个,所以你不能(直截了当地)这样做

假设
psql
可以从stdin读取命令,这里的简单解决方法是使用一个

su-c“psql-d myDB-c您还可以使用Bash的“ansic”字符串语法。请参阅
su -c "psql -d myDB-c <<'____HERE' 
    SELECT count(*) AS number,
           date_trunc('day'::text, users.registerdate) AS registerdate
    FROM users;
____HERE" postgres