expect和shell的互動

2021-08-20 13:30:43 字數 578 閱讀 4386

今天寫了個指令碼expect指令碼 本以為很簡單一件事 最後因為expect和shell的一些差別導致浪費了不少時間 特此記錄下:

兩者互動時(expect中使用shell命令)注意[shell指令碼太常用了,省略 了shell書寫格式]:

兩者的變數賦值方式不同 expect中是:

set variablename [lindex $argv 0 ] 將傳入給expect指令碼的引數列表的第乙個引數值賦值給variablename 其中$argv是固定的

如果是非傳入引數列表則

(1) 分兩行**

set cmdlineresult [ stty size]

set variablename [lindex $cmdlineresult 0 ] 注意其中cmdlineresult 不能直接是shell命令 而是cmdline的執行結果

(2)當然也可以合二為一

set variablename [lindex [stty size] 0 ] 注意其中cmdline可以直接是shell命令

之前就是因為set variablename [lindex $(stty size) 0 ]各種出錯 。

shell中Expect的程式互動

一般來說,我們在編寫shell指令碼時都是自動執行的,如果涉及到與使用者的交付,如遠端ssh終端輸入使用者名稱 密碼。有時我們需要編寫的指令碼自動執行,而不需要人工干預,選擇expect實現是乙個很好的方式。來乙個簡單的例子 hello.sh bin sh echo n what s your na...

SHell程式設計之Expect免互動

1 expect是建立在tcl基礎上的乙個工具,expect是用來進行自動化控制和測試的工具。主要解決shell指令碼中不可互動的問題。對於大規模的linux運維很有幫助。2 在linux運維和開發中,我們經常需要遠端登入伺服器進行操作,登入的過程是乙個互動到的過程,可能會需要輸入yes no pa...

shell中使用expect進行互動

expect常用語shell指令碼中的互動指令 usr bin expect 設定變數 set ip 192.168 1.100 set user ljw set password 123456 set timeout 5 開啟乙個會話 spawn ssh user ip 通過expect對出現的情...