linux - 如何編寫expect腳本自動(dòng)導(dǎo)入mysql數(shù)據(jù)庫
問題描述
我的腳本是這樣的test.sh
#!/usr/bin/expectset password rootspawn mysql -u root -pexpect 'password:'send '$passwordrn'send 'drop database blog_api;rn'send 'CREATE DATABASE `blog_api` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;rn'send 'exit;rn'expect 'Bye'send 'mysql -uroot blog_api < 2017-01-09-12:00:09.sql;rn'expect 'Enter password:'send '$passwordrn'interact
導(dǎo)出是沒有問題的,但是導(dǎo)入的話沒有效果,大神求教。。。
問題解答
回答1:你腳本中已經(jīng)設(shè)置了變量password的值,為什么不直接用shell呢,直接執(zhí)行命令mysql -uroot -p $password blog_api < 2017-01-09-12:00:09.sql或者寫成shell腳本不就可以導(dǎo)入了。
回答2:為啥非要用expect呢,這個(gè)命令命名可以直接用shell來寫的
#!/usr/bin/env bashmysql -uroot -p ’root’ -e ’drop database if exists blog_api; CREATE DATABASE `blog_api` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;’mysql -uroot -p ’root’ blog_api < 2017-01-09-12:00:09.sql
如果非要用expect的話,試試下面這樣
#!/usr/bin/expectset password ’root’spawn mysql -uroot -p -e 'drop database if exists blog_api; create database `blog_api` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;'expect 'password:'send '$passwordr'expect eofspawn mysql -uroot blog_api < 2017-01-09-12:00:09.sql;expect 'password:'send '$passwordr'expect eof
相關(guān)文章:
1. html5 - 怎么用npm下載react3版本的路由呢。2. java - 原生CGLib內(nèi)部方法互相調(diào)用時(shí)可以代理,但基于CGLib的Spring AOP卻代理失效,為什么?3. python中怎么對(duì)列表以區(qū)間進(jìn)行統(tǒng)計(jì)?4. 為什么我ping不通我的docker容器呢???5. python - django models 為生成的html元素添加樣式。6. CSS3可否做出這個(gè)效果?7. javascript - js中遞歸與for循環(huán)同時(shí)發(fā)生的時(shí)候,代碼的執(zhí)行順序是怎樣的?8. docker - 如何修改運(yùn)行中容器的配置9. node.js - 為什么npm安裝vue-cli會(huì)出現(xiàn)下面的錯(cuò)誤??!!!?10. javascript - 寫移動(dòng)端的頁面的時(shí)候,有不一快空白,是怎么回事?
