2017-06-02 9 views
-1

を期待通りにexpect`スクリプトが動作しない、私は以下のような簡単なスクリプトを持っているが、コマンドラインから2つの数字を読み、それらを一緒に追加していない:Linuxシェル:私は `

$cat runexp.sh 
#!/bin/bash 
echo "read 1st number" 
read n1 
echo "read 2nd number" 
read n2 
expr $n1 + $n2 

をそれが実行されると、何の問題を。その後、私は以下のように期待するスクリプトを書いた:

$cat autorun.sh 
#!/usr/bin/expect 
spawn ./runexp.sh 
expect 'read 1st number' {send "1"} 
expect 'read 2nd number' {send "2"} 
interact 

はまだそれは、コマンドラインから読み取ることが求められますようだ、かなり長い時間が経過した後、それが終了します。

$./autorun.sh 
spawn ./runexp.sh 
read 1st number 
5 
4 
3 
5 
4 
3 
read 2nd number 
9 

どこが間違っていましたか?おかげさまで

答えて

2

改行も送信する必要があります。そうしないと、少なくとも(デフォルトのタイムアウトが10秒と思われるまで)待機します。

さらに、expectは、囲み文字列の一重引用符のファンではありません。 Tcl(どこから来たか)と同様に、二重引用符または中括弧が必要です。これはうまく動作します:

#!/usr/bin/expect 

spawn ./runexp.sh 

expect "read 1st number" {send "1\n"} 
expect {read 2nd number} {send "2\n"} 

interact 
関連する問題