shell腳本expected
Ⅰ shell中 expect使用
send "pwd" 之後應該繼續 expect 一個提示符,或者等待一個 timeout 的時間,然後send 一條命令 touch file1,如此繼續。
不考慮 expect 練習的目的的話,完全這個任務最方便的是用 sudo 代替 su,可配置 sudo 執行你這個操作時不用密碼。
Ⅱ 如何在bash shell腳本中使用expect
1、首先檢查你機器上有沒有expect(我知道ubuntu默認是沒有安裝的)
ls /usr/bin | grep expect 看看有沒有裝expect
2、沒有的話需要安裝
在ubuntu的軟體安裝中心,搜索tcl 和tk 和expect並安裝;
也可以命令行輸入sudo apt-get install tcl tk expect
3. 環境ready了後,可以在shell腳本中用Here document的方式使用expect命令
Here document格式如下:
expect <<!
這中間都是expect命令
!
為防止錯誤,建議都頂格寫,前面不要留空格。
Ⅲ shell腳本啟動 :字元串判空有空格報錯:binary operator expected
使用 -z 或 -n 對一個變數判空時,需要注意若直接使用 [ -n ${ARG} ] 這種形式,若 ${ARG} 中有空格將會報錯:
輸出:
顯然不對
解決方法,使用 [[ -n ${ARG} ]] 或 [ -n "${ARG}" ]
eg:
Ⅳ 在AIX小機上跑的shell腳本報錯:0403-057 Syntax error at line 8 : `(' is not expected
提示很清楚了,第8行多了個單引號,其實應該是for語句上面那行,printf後面單引號使用不當。
Ⅳ shell腳本嵌套expect後如何繼續執行shell命令
./suroot.sh 中為什麼不直接申明 #!/usr/bin/expect ?
然後,expect -c " xxx " 就可以直接寫成 xxx 了。
Ⅵ 如何在shell腳本中調用expect實現自動化
簡單的腳本,參考下
要交互的腳本(talk.sh)如下:
#!/bin/bash
echo "Who are you?"
read who
echo "Hello,$who"
echo "Are you happy?"
read answer
echo "why?"
read answer
自動化腳本:
#!/bin/bash
expect<<- END
spawn ./talk.sh
expect "who"
send "firefly\n"
expect "happy?"
send "Yes,I am happy.\n"
expect "why?"
send "Because it worked!\n"
expect eof
exit
END