長いコマンドを渡すことができます。それは何とか複数のコマンドです。EXPECTがエスケープ文字をコマンド文字に解釈するにはどうすればいいですか?
./expectscript "mkdir /usr/local/dir1\ncd /usr/local/dir1\ntouch testfile"
お知らせ私は「\ n」を置く私が処理していたかのように入力を開始する。まず、ここで私は、私は、その後ように、このスクリプトを実行します
#!/usr/bin/expect -f
set timeout -1
spawn telnet xxx.xxx.xxx.xxx
expect "*?username:*"
send "someusername\r"
expect "*?assword:*"
send "somepassword\r"
# Here's the command I'd like to pass from the command prompt
set command [lindex $argv 0]
send "$command\r"
send "exit\r"
スクリプトが期待していますコマンドを実行してから次のコマンドに移動します。
";"でコマンドを区切ることができますが、この特定の練習では、 "\ r"で "\ n"を解釈できると期待しています。
send "mkdir /usr/local/dir1\r"
send "cd /usr/local/dir1\r"
send "touch testfile\r"
"\ n"を "\ r"と解釈するにはどのようになるのでしょうか?私は "\ n"の代わりに "\ r"を引数に入れてみましたが、うまくいきません。
ありがとうございます。
リテラルのバックスラッシュ-nと一致させたいので、正規表現の '{\\ n}'であることに注意してください。これは、TclのパースとREエンジンの両方のリテラルを得るために書くバックスラッシュの数を最小限にする形式です解析する... –
あなたの応答を詳細に説明するために余分な手順を取ってくれてありがとう:) – EDJ