我們寫乙個名為test.sh的小指令碼,程式的原始碼如下:
#!/bin/bash
expect_test()
x" = "x" ];then
echo "warning:no data"
ret=1
else
echo "the date is:$"
ret=0
fireturn $ret
}expect_test
我們寫乙個expect指令碼:
#!/usr/bin/expect
spawn sh test.sh
expect "please input data:"
send "just for test\n"
expect eof
catch wait result
exit [lindex $result 3]
解釋:
第6行:catch wait result
解釋:將wait命令的返回值儲存到result變數中. result變數並不是乙個特殊變數, 你可以隨意換乙個新名字(比如retval).
備註:wait命令的返回值是乙個"%d %s 0 %d"格式的字串,第0個值是pid,第1個是spawn_id(不知道它具體帶表了什麼),第2個應當是代表指令碼是否正常完成,第3個是子程序的返回值.
第7行:exit [lindex $result 3]
將result變數(這個變數儲存的是乙個列表)list中的index=3的那個值取出來,返回它。你可以搜尋"tcl 列表 lindex"以檢視詳細資訊。
指令碼執行結果:
例:
#!/bin/bash
expect_test()
" echo "will call expect1."
expect -c ' #注意這裡要使用單引號,雙引號效果不一樣
spawn sh test.sh
expect "please input data:"
send '$'\n
expect eof
catch wait result
exit [lindex $result 3]
' echo $?
echo "call expect1 finish."
echo ">>>>>>>>>>>>>>>>>>>>"
}expect_test 120
expect_test
執行結果: Ubuntu UBUNTU中如何獲得root許可權
在終端中輸入 sudo passwd root enter new unix password 在這輸入你的密碼 retype new unix password 確定你輸入的密碼 passwd password updated successfully 以後,如果在想獲得root許可權,只需進行如...
如何用expect讀檔案
之前我寫expect指令碼喜歡在bash中嵌入here document來實現,因為這樣往expect指令碼中傳shell變數比較方便。結果最近發現有個問題,當我用while讀檔案的時候,變數值全部為空。這是因為here document中把變數當作是bash的變數,而不是expect中的變數。所以...
如何在系統中獲得幫助
如何在系統中獲得幫助 1.當得到乙個命令我們不知道這個命令的作用時 whatis 命令 操作 顯示rm這個命令的用途 2.當知道命令的用途,但是不知道命令的執行格式或者方式時 help 獲得命令的幫助。help只適用於命令 例如 rm help 選加 可以加也可以不加 加的個數可以是任意多個 必須加...