linux - 如何編寫expect腳本自動導入mysql數據庫
問題描述
我的腳本是這樣的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
導出是沒有問題的,但是導入的話沒有效果,大神求教。。。
問題解答
回答1:你腳本中已經設置了變量password的值,為什么不直接用shell呢,直接執行命令mysql -uroot -p $password blog_api < 2017-01-09-12:00:09.sql或者寫成shell腳本不就可以導入了。
回答2:為啥非要用expect呢,這個命令命名可以直接用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
相關文章:
1. mysql - 在不允許改動數據表的情況下,如何優化以varchar格式存儲的時間的比較?2. java中返回一個對象,和輸出對像的值,意義在哪兒3. MySQL中無法修改字段名的疑問4. docker網絡端口映射,沒有方便點的操作方法么?5. css3 - 純css實現點擊特效6. 安全性測試 - nodejs中如何防mySQL注入7. javascript - Img.complete和img.onload判斷圖片加載完成有什么區別?8. css - 網頁div區塊 像蘋果一樣可左右滑動 手機與電腦9. python文檔怎么查看?10. python - pandas dataframe如何對某列的空數據位置進行update?update的函數是自定義的,參數是同一行的另外兩列數據
