一般來說,我們在編寫shell指令碼時都是自動執行的,如果涉及到與使用者的交付,如遠端ssh終端輸入使用者名稱/密碼。有時我們需要編寫的指令碼自動執行,而不需要人工干預,選擇expect實現是乙個很好的方式。
來乙個簡單的例子:
hello.sh
#!/bin/sh
echo -n "what's your name?:"
read name
echo "hello $name!"
exit 0
單獨執行過程中需要在終端輸入使用者名稱,執行結果如下,中間需要使用者輸入名稱,指令碼才會繼續往下執行
執行截圖:
nfssrv:/opt/mytest # sh hello.sh
what's your name?:
使用expect,編寫乙個應答指令碼autohello.sh,使hello.sh自動執行下去
autohello.sh
#!/bin/bash
expect << end
spawn ./hello.sh
expect "name"
send "ssrs\n"
expect eof
exit
end
執行截圖:
nfssrv:/opt/mytest # sh autohello.sh
spawn ./hello.sh
what's your name?:ssrs
hello ssrs!
expect和shell的互動
今天寫了個指令碼expect指令碼 本以為很簡單一件事 最後因為expect和shell的一些差別導致浪費了不少時間 特此記錄下 兩者互動時 expect中使用shell命令 注意 shell指令碼太常用了,省略 了shell書寫格式 兩者的變數賦值方式不同 expect中是 set variabl...
expect命令在shell指令碼中的應用
在shell程式設計中,經常會用到命令的互動,此時就需要在shell中巢狀expect命令 單獨使用expect語法參考該文。例1 test.sh中內容 bin sh echo begin echo 是shell語法 注意 例2 例3 可以連續多次使用 spawn 命令,即使沒有互動也可以用,當然沒...
expect常用方法shell
1.usr bin expect 告訴作業系統指令碼裡的 使用那乙個 shell 來執行。這裡的 expect 其實和 linux 下的 bash windows 下的 cmd 是一類東西。注意 這一行需要在指令碼的第一行,從而告知作業系統採用 expect 作為 shell 執行指令碼。注意 當使...