我只是想執行這個bash命令在expect腳本:如何從expect/TCL腳本中的轉儲文件創建MySQL數據庫?
mysql -u root -h localhost -proot dbTest < temp.sql
我加spawn
的開始,但它不工作。我認爲「<」符號意味着什麼!
任何人都可以幫我解決這個問題嗎?
我只是想執行這個bash命令在expect腳本:如何從expect/TCL腳本中的轉儲文件創建MySQL數據庫?
mysql -u root -h localhost -proot dbTest < temp.sql
我加spawn
的開始,但它不工作。我認爲「<」符號意味着什麼!
任何人都可以幫我解決這個問題嗎?
我現在已經找到了一個解決這個問題。我避免了「<」的象徵,所以我們可以使用它代替命令:
spawn mysql -u root -h localhost -proot dbTest -Bse "source temp.sql"
人們傾向於使用sqldump和mysqldump。我喜歡在下面的鏈接,說rubbish
與phpMyAdmin報價:
how to import a very large query over phpmyadmin?
關於cron
或expect
...
我知道的cron有困難的日期說,經常是什麼在起作用在命令行有被推到一個bash腳本中以便於工作。然後cron運行.sh腳本與嵌入字符串。
此外,它是從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
或的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
是的,它運作良好,這真是一個不錯的選擇。另外,它也會在未來幫助我。 –
真棒無論什麼作品 – Drew
所以再次感謝你,是我在更好的方式又寫了。嗯,你是對的,我可以用命令創建一個.sh文件並從期望中調用它。這實際上很長,但我會嘗試。 –
看看tcl大括號{},也許圍繞着我不知道的'<'符號。祝你好運 – Drew
不幸的是,它不工作。但是,我對這個問題得到了兩個更正確的答案。 thanx再次 –