如何使用su-c和bash脚本引用psql语句?
我正在bash脚本中尝试以下语句:如何使用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',而不
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