私は一日の大部分を答えを求めてどこでも探していましたが、これまでのところ何もうまくいきませんでした. 私がやろうとしているのは、GNU スクリーン セッションにアタッチし、コマンド ライン引数 (コマンド) を送信し、その 1 つのコマンドの結果を出力する、expect スクリプトを実行することです。これまでのところ、これは私のスクリプトの1つです:
#!/usr/bin/expect -f
set timeout 3
#exp_internal 1
spawn screen -raAd call_sess
sleep 1
expect -re "\\\$" {
send $argv
send "\n"
sleep 1
}
expect -re ".*" {
set output $expect_out(0,string)
}
expect "\$" {
send "\001"
send "d"
}
expect eof {
puts "OUTPUT---------------"
puts $output
puts "OUTPUT---------------"
}
$expect_out(0,string) は改行のみに一致しますが、.* は最後の一致以降のすべてに一致する必要があります。誰かが私がこれをうまく機能させるのを手伝ってくれるなら、私はあきらめてそれを不可能と呼ぶ準備ができています.
編集:コメントで回答しましたが、コマンドが画面で実行されることを指定する必要がありました。出力を正しくキャプチャできません。
EDIT2: スクリプトを提案どおりにスポーン画面に変更しました、ありがとう!