0

在 bash 脚本中执行以下 psql 语句时出现错误:

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

引发的错误是:

错误:在“'CREATE”第 1 行或附近未终止的带引号的字符串:'CREATE ^

因此,单终止引号没有被识别为应有的状态。当使用转义双引号而不是单引号 (...\"CREATE EXTENSION hstore;\") 我得到同样的错误。直接从命令行执行命令时,一切正常。

有人知道出了什么问题吗?

提供一些附加信息:

操作系统:Ubuntu 11.10,Postgresql 版本:9.1

在此先感谢,理查德

已解决: execlog 函数产生错误。现在我打电话

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

效果很好!

谢谢你的帮助!

4

1 回答 1

1

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

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

(我找不到关于 的任何信息execlog,所以我不知道上述是否可行。)

于 2012-08-01T12:25:01.723 回答