如何在 bash 下将架构文件插入 mysql



我想通过 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设置为空字符串,它可以正常工作。有什么想法吗?谢谢。

似乎是罪魁祸首

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

双引号未转义,字符串过早终止并重新打开。也许,未来还有更多的报价。

相关内容

  • 没有找到相关文章

最新更新