脚本文件为何总是在where循环指定位置报错?

小弟最近初学shell文件。在CentOS6中写了一个脚本文件对程序进行操作

大概用途就是是向mysql数据库中增加数据

向其中储存用户信息的表中增加用户数据,用户由登录名和密码组成
登录名我准备从100开始,然后每一个用户增加1,而密码我准备都是123456

所以我在sql的插入操作中使用了where循环,但是每次一运行脚本,都会报错:./all.sh: line 4: 2000]: No such file or directory

shell文件具体内容如下:

#!/bin/bash
PassWord=123456
number=100
while [${number} < 2000]
do
/usr/bin/expect <<-EOF
spawn mysql -u root -p
expect "*password*"
send "$PassWord\r"
expect "*>*"
send "show databases;\r"
expect "*>*"
send "use testserver;\r"
expect "*>*"
send "show tables;\r"
expect "*>*"
        send"INSERT INTO testnum values('${number}',123456);\r"
        expect "*>*"
        let "number++"
EOF
done

求各位大佬帮忙解答一下原因

2个回答

研究了一下你这个脚本,除了条件判断语句错误外,还有四处错误:
第零条,密码定义时应该定义为字符串。
第一点, send"INSERT INTO 发送插入命令那里 send 语句后面没有空格,导致接收不到插入命令。
第二点, let "number++" 语句的位置错误,它放在了 expect 的 EOF 内部,实际上还是在 MySQL 的控制台所以报 let 命令无效。22 行的 EOF 外面。
第三点,因为是每一轮循环都是需要重新登录 MySQL 的,所以需要退出 mysql 命令,最后一个 expect 后面应该加上 send "quit" 退出命令。20 行。
修改后完整的代码为:

      2 Password='123456'
      4 while [ ${number} -lt 2000 ]
     18 send "INSERT INTO testnum values('${number}',123456);\r"
     19 expect "*>*"
     20 send "quit;\r"
     21 EOF
     22 let "number++"

这是有错误的代码,修正后保证脚本能正确执行。

按照你的代码调试解决,注意以下两个问题:
1. 数值比较这里使用<,被脚本解析为读取文件输入操作,因此提示2000]文件不存在,应该使用 -lt 表示小于(-eq -> 等于 -gt -> 大于);
2. 使用[]计算逻辑,需要注意[]与内部内容之间需要空格间隔,否则不会将[]解析为计算逻辑命令,而是[与之后紧跟内容组成一个命令,结果就是提示命令[xx无效

综上,你修改为 while [ ${number} -lt 2000 ] 应该就没问题了

wojiushiwo945you
毕小宝 测试了一下,的确是循环条件用法不正确,而且要注意中括号首尾必须有空格。
3 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问

相似问题

4
刚接触python,在输入python脚本时,语法报错,什么原因
0
通过web端,使用php调用包含函数的python脚本,不报错,也没有运行结果,
2
WebGL如果不带脚本可以打包发布,带脚本发布就报错
3
shell脚本,执行时并修改指定目录下文件内容
0
计算机小白求一段简单代码,备份文件到指定文件夹并重命名
0
perl脚本执行报错,找不到解决原因
1
unity中人物身上挂了一个单例脚本,然后脚本里不能引用人物本身?
1
cannot import name etree ------tf.app.run()命令行中运行脚本时报错
1
linux crontab 定时任务,定时执行shell脚本,被递归调用的脚本日志未能成功输出至指定文件
1
连接数据库文件时,版本报错
1
shell脚本定义变量之后grep报错:没有那个文件或目录?
1
用sublime text3写python3脚本加载了加载了插件SublimeREPL之后编译脚本报错
3
Linux批量运行没有输出文件的问题
1
Robotframework + appium环境已配置,计算器脚本在ride上执行时,报错
1
VS2015运行程序报“未初始化脚本宿主”
2
直接引用带有import关键字的JS脚本会报错
1
求大神指点,python脚本文件,设置EXCEL单元格背景颜色,并没有报错,但是为什么不变色
2
sh脚本怎么循环读取文件的每一行,切割并且赋值给不同的变量呢?
1
VS2013环境下MFC对话框添加类脚本报错?
2
【python脚本报错js2py】 module 'js2py' has no attribute 'evaljs'