Top/Lang/Tcl_Tk_Expect

目次

共通

コメント

I/O

1sec 未満の sleep

変数

関数

グローバル変数

他のスクリプトファイルから関数や変数を取り込む

フロー制御

if

set i 10;
set EXP 20;
if { ${i} > ${EXP} {
    処理...
} elseif { ${i} == ${EXP} } {
    処理...
} else {
    処理...
}

for

set LOOP_MAX 100;
for { set i } { ${i} < ${LOOP_MAX} } { incr i } {
    処理...
}

foreach

while

while { ${i} >= ${VAL} } {
    処理...
}

ループ制御の補助コマンド

commanddescription
continueループをスキップ。
breakループを終了
exit [ return_code ]return_code は、default では0

switch

switch [options] ${string} {
    pattern_1 {
        処理...
    }
    pattern_2 {
        処理...
    }
    ...
    default {
        処理...
    }
}

時間

経過時間の計測

変数の名前と値の取得

expect

基本

  1. 相手にするプログラムを呼び出す
  2. expect で、期待するキーワード(プロンプト文字列や、エラーメッセージの一部など)を指定する。
  3. 期待するキーワードが来たときに、人に代わって入力するコマンド等を send で送る。

interact :ユーザのマニュアル操作も組み合わせる

#!/usr/bin/expect
spawn bash;
expect "\\$" {
    send "ping www.example.com\r";
}

interact;    # ユーザーに処理を渡す

Ctrl-* キーの割り当て

timeout

タイムアウトやキーワード以外の条件を考慮した待ち方をしたいときの例

set timeout 1;
while {1} { # 基本的には無限待ち
    expect "KEYWORD" {
        処理;
        break;   # この処理が終わったら、whileループを抜ける
    }
    if { 条件 } { # timeout する度にこの条件がチェックされる
        break;    # 場合によっては無限待ちループを抜ける
    }
}

expect

複数のキーワードを受け付け、キーワードによって挙動を変えたい場合

expect {
    "KEYWORD1" { 処理1; }
    "KEYWORD2" { 処理2; }
}

シグナルを受け取った時の処理

log の取得

参考リンク


トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2019-06-09 (日) 16:59:05