使用grep输出设置expect变量

时间:2014-08-08 12:38:54

标签: grep expect

我使用expect脚本登录远程服务器;要这样做,我需要设置2个变量:

set username <user>
set password <passwd>

我grep user&amp;来自文件的passwd。如何使用grep ouptut设置expect变量?

当我尝试:

set username "grep '(?<=username:)[^<]*' file"
set password "grep '(?<=password:)[^<]*' file"
期待说:

命令名称无效&#34; ^&lt;&#34;     执行时 &#34; ^&LT;&#34;     从

中调用

&#34;发送&#34; grep -oP&#39;(?&lt; = username:)[^&lt;] *&#39;文件&#34;&#34;

(文件&#34; ./ test&#34;第11行)

当我尝试:

set username "grep -oP '(?<=username:)[\^\<]*' file)" 
期待说:

无法阅读&#34;(grep -oP&#39;(?&lt; = username:)&#34;:

没有这样的变数     执行时

&#34;发送&#34; $(grep -oP&#39;(?&lt; =用户名:)[\ ^ \&lt;] *&#39;文件)&#34;&#34 ;

(文件&#34; ./ test&#34;第11行)

我只是想知道什么是正确的语法。

1 个答案:

答案 0 :(得分:2)

你会想要这样的东西:

set fid [open file r]
set contents [read $fid]
close $fid
lassign [regexp -inline {username:([^<]+)} $contents] x username
lassign [regexp -inline {password:([^<]+)} $contents] x password

你在使用Tcl语法时遇到了困难,所以从Tcl tutorial开始。