执行Bash脚本:错误:未终止的引用字符串在或附近

时间:2012-08-01 12:16:21

标签: bash postgresql

在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;'"

工作正常!

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

问题在于删除引号后,单引号不再被视为转义空格的语法,而是文字字符作为字符串的一部分。尝试

execlog psql -h $HOST -p $PORT -U $USER -d $DB -q -c 'CREATE EXTENSION hstore;'

(我无法在execlog找到任何信息,因此我不知道上述内容是否有效。)