我只是想在expect脚本中执行这个bash命令:
mysql -u root -h localhost -proot dbTest < temp.sql
我在开头添加了spawn
,但它无效。我认为&#34;&lt;&#34;符号毫无意义!
有人可以帮我解决这个问题吗?
答案 0 :(得分:2)
spawn
不支持<
方向,但您可以这样做:
spawn sh -c "mysql -u root -h localhost -proot dbTest < temp.sql"
似乎您希望以非交互方式运行mysql
,以便您也可以使用Expect
system
命令:
system "mysql -u root -h localhost -proot dbTest < temp.sql"
或Tcl
&#39; exec
命令:
exec mysql -u root -h localhost -proot dbTest < temp.sql >@ stdout 2>@ stderr
如果system
失败,您可能需要将整个exec
或catch
命令放在mysql
块中:
catch {system "mysql ..."} catched
# or
catch {exec mysql ...} catched
答案 1 :(得分:1)
人们倾向于使用sqldump和mysqldump。我喜欢以下链接中的引用:rubbish
与phpmyadmin:
how to import a very large query over phpmyadmin?
关于cron
或expect
...
我知道cron在使用日期方面遇到了麻烦,并且通常在命令行中运行的东西必须在bash脚本中推送以便于工作。然后cron运行.sh脚本与嵌入字符串。
从2小时前开始,这是你的重复问题。
答案 2 :(得分:0)
我现在找到了解决这个问题的方法。我避免了“&lt;”符号,所以我们可以改用这个命令:
spawn mysql -u root -h localhost -proot dbTest -Bse "source temp.sql"