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 回答