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 を空の文字列に設定すると、正常に動作します。何か案は?ありがとう。