0

bash で mysql コマンドを使用して、スキーマ ファイルの内容を単一のフィールドとして MySQL データベースに挿入したいと考えています。mysql コマンドラインで簡単に実行できます。しかし、私の場合は、いくつかの動的変数と一緒に使用したいということです。コードは以下のようになります: (i はサービスのインデックスです)

    WSDL=`cat ${WSDL_FILE}`
    WADL=`cat ${WADL_FILE}`
    XSD=`cat ${XSD_FILE}`

    ADD_SERVICE=$(eval echo "insert into Services set Name=\'\${SRV_LIST_${i}}\', Description=\'\${SRV_LIST_${i}_Description}\', Version=\'\${SRV_LIST_${i}_Version}\', Status=\'Active\', WSDL=\'\'\'${WSDL}\'\'\', WADL=\'\'\'${WADL}\'\'\', XSD=\'\'\'${XSD}\'\'\', CreatedBy=\'${USER}\', CreatedOn=NOW\(\), CreatedAt=\'${HOSTNAME}\';")
    Result=$(mysql -umysql -pmysqlpasswd -D service_reg -e "${ADD_SERVICE}")

結果は次のようになります。

./ServiceRegistry.sh: eval: line 279: syntax error near  unexpected token `newline'
./ServiceRegistry.sh: eval: line 279: `echo insert into Services set Name=\'${SRV_LIST_1}\', Description=\'${SRV_LIST_1_Description}\', Version=\'${SRV_LIST_1_Version}\', Status=\'Active\', WSDL=\'\', WADL=\'<?xml version="1.0" encoding="UTF-8"?>'

しかし、WSDL、WADL、および XSD を空の文字列に設定すると、正常に動作します。何か案は?ありがとう。

4

1 に答える 1

0

こいつが犯人らしい

WADL=\'<?xml version="1.0" encoding="UTF-8"?>'

二重引用符はエスケープされず、文字列は途中で終了して再度開かれます。たぶん、今後さらに多くの引用があります。

于 2012-11-23T12:31:20.890 に答える