在bash脚本中执行以下psql语句时出错:
execlog "psql -h $HOST -p $PORT -U $USER -d $DB -q -c 'CREATE EXTENSION hstore;'"
引发的错误是:
错误:“'CREATE”处或附近未被终止的引用字符串 第1行:'创建 ^
因此,单个终止引用无法识别。 当使用转义双引号而不是单引号(... \“CREATE EXTENSION hstore; \”)时,我得到相同的错误。 直接从命令行执行命令时,一切正常。
有人知道出了什么问题吗?
提供一些额外信息:
OS:Ubuntu 11.10,Postgresql Verion:9.1
提前致谢, 理查德
已解决: execlog函数会产生错误。现在我打电话
log "exec psql -h $HOST -p $PORT -U $USER -d $DB -q -c 'CREATE EXTENSION hstore;'"
工作正常!
感谢您的帮助!
答案 0 :(得分:1)
问题在于删除引号后,单引号不再被视为转义空格的语法,而是文字字符作为字符串的一部分。尝试
execlog psql -h $HOST -p $PORT -U $USER -d $DB -q -c 'CREATE EXTENSION hstore;'
(我无法在execlog
找到任何信息,因此我不知道上述内容是否有效。)