免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 7806 | 回复: 4
打印 上一主题 下一主题

[其他] extra characters after close-quote while executing [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-05-29 09:39 |只看该作者 |倒序浏览
我这边每天都会调用shell脚本,远程登录服务器数据库,查询固定表固定字段的时间戳,下面是源代码,但执行报错,求有经验人,帮忙指导一下

# db2查询函数
auto_check_db2() {
  expect -c "
              set timeout -1
              spawn ssh -o StrictHostKeyChecking=no $1
              expect {
                      eof  {exit 1}
                      \"password:\"
                  }
                  send \"$2\r\"
              expect {
                      eof  {exit 2}
                      \"password:\" {exit 3}
                  \"]#\"
                  }
              send \"su - db2inst1\r\"
              expect {
                      eof  {exit 4}
                          \"]$\ \"
                  }
              send \"db2\r\"
              expect {
                      eof  {exit 5}
                          \"db2 =>\"
                  }
                  send \"connect to $3\r\"
                  expect {
                      eof  {exit 6}
                          \"db2 =>\"
                  }
                  send \"$4\r\"
                  expect {
                      eof  {exit 7}
                          \"db2 =>\"
                  }
                  send \"quit\r\"
                  expect {
                      eof  {exit 8}
                          \"]$\ \"
                  }
                  send \"exit\r\"
                  expect {
                      eof  {exit 9}
                          \"]#\"
                  }
                  exit
              expect eof
                        "
return $?
}


auto_check_db2 "root@16.32.0.100" "xzsawq21" "HFMIS" "SELECT max(JXRQ) FROM \"db2inst1\".\"CPZGLSZ\" where to_date(JXRQ,'YYYY-MM-DD')<current date"


执行结果报错
[root@SCRIPT test]# ./check_db_max_values_single.sh
extra characters after close-quote
    while executing
"send "SELECT max(JXRQ) FROM "db2inst1"."CPZGLSZ" where to_date(JXRQ,'YYYY-MM-DD')<current date\r"
                  expect {
                      eof  {exit 7}
                 ..."
[root@SCRIPT test]#


注释:因为db2数据库中schema问题,select from的时候只能写成"db2inst1"."CPZGLSZ"


求大神,帮忙指导下!

论坛徽章:
0
2 [报告]
发表于 2013-05-29 10:25 |只看该作者
自己顶一下,找到了一种解决办法,在“前加双重转义改为\\\"db2inst1\\\".\\\"CPZGLSZ\\\"即可,但是新的问题产生了,该查询sql是从数据库中获取的,本地获取到后会变成双倍的转义\\\\\\"db2inst1\\\\\\".\\\\\\"CPZGLSZ\\\\\\",大神们求解啊!

论坛徽章:
93
2015年辞旧岁徽章
日期:2019-10-10 10:51:15CU大牛徽章
日期:2014-02-21 14:21:56CU十二周年纪念徽章
日期:2020-10-15 16:55:55CU大牛徽章
日期:2014-02-21 14:22:07羊年新春福章
日期:2019-10-10 10:51:39CU大牛徽章
日期:2019-10-10 10:55:38季节之章:春
日期:2020-10-15 16:57:40ChinaUnix元老
日期:2019-10-10 10:54:42季节之章:冬
日期:2019-10-10 10:57:17CU大牛徽章
日期:2014-02-21 14:22:52CU大牛徽章
日期:2014-03-13 10:40:30CU大牛徽章
日期:2014-02-21 14:23:15
3 [报告]
发表于 2013-05-29 17:12 |只看该作者
太多反斜杆了,看的好眼花啊。

论坛徽章:
16
IT运维版块每日发帖之星
日期:2015-10-02 06:20:00IT运维版块每月发帖之星
日期:2015-09-11 19:30:52IT运维版块每周发帖之星
日期:2015-09-11 19:20:31IT运维版块每日发帖之星
日期:2015-08-26 06:20:00每日论坛发贴之星
日期:2015-08-20 06:20:00IT运维版块每日发帖之星
日期:2015-08-20 06:20:002015年辞旧岁徽章
日期:2015-03-03 16:54:15金牛座
日期:2014-05-04 16:58:09双子座
日期:2013-12-17 16:44:37辰龙
日期:2013-11-22 15:20:59狮子座
日期:2013-11-18 22:55:08射手座
日期:2013-11-12 10:54:26
4 [报告]
发表于 2013-05-29 17:23 |只看该作者
头疼,看的那么长的。

论坛徽章:
0
5 [报告]
发表于 2013-06-02 19:04 |只看该作者
回复 1# gly896420885

这个问题是括号不匹配
    send \"$4\r\"
这个反斜杠去掉

auto_check_db2 "root@16.32.0.100" "xzsawq21" "HFMIS" "SELECT max(JXRQ) FROM \"db2inst1\".\"CPZGLSZ\" where to_date(JXRQ,'YYYY-MM-DD')<current date"
中的()添加\
auto_check_db2 "root@16.32.0.100" "xzsawq21" "HFMIS" "SELECT max\(JXRQ\) FROM \"db2inst1\".\"CPZGLSZ\" where to_date\(JXRQ,'YYYY-MM-DD'\)\<current date"
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP