0

bash スクリプト内で次の psql ステートメントを実行すると、エラーが発生します。

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

発生したエラーは次のとおりです。

エラー: "'CREATE" 行 1 またはその近くの引用符で囲まれた文字列が終了していません: 'CREATE ^

したがって、単一の終了引用符は、本来あるべき姿で認識されません。一重引用符 (...\"CREATE EXTENSION hstore;\") の代わりにエスケープされた二重引用符を使用すると、同じエラーが発生します。コマンドラインから直接コマンドを実行すると、すべて正常に動作します。

誰かが何がうまくいかないのか知っていますか?

追加情報を提供するには:

OS: 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 に答える