我想通过 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"?>'
双引号未转义,字符串过早终止并重新打开。也许,未来还有更多的报价。