grep:无法打开“命令”

时间:2014-07-01 10:15:12

标签: perl grep

我正在登录远程计算机并执行命令,然后点击结果。我正在使用Expect模块。这是我的示例代码。

use Expect;
my $exp=new Expect();
$exp->spawn("ssh $hostname\r");
$exp->expect(5,"*]-> ");
$exp->send("command sent here \r");
$exp->expect(5,"*]-> ");
my $res=$exp->before();  // Here i ll get the command output in a variable. The variable contains TCPIP:1.1.1.1 in one line and UDPIP:1.2.2.2 in another line.
my $id=`grep -i TCPIP $res | cut -d ":" -f2 `;
print " The result is $id \n";

但我在这里收到错误

grep: can't open "command sent " .sh: TCPIP not found sh:UDPIP not found.

2 个答案:

答案 0 :(得分:0)

即使没有expect,也许你可以做到?

my $id = `ssh $hostname <your_command> | grep -i TCPIP | cut -d":" -f2`;

答案 1 :(得分:0)

grep将文件名作为参数而不是字符串。你需要这样的东西:

echo $res | grep -i TCPIP | cut -d ":" -f2 `;

确保该命令首先通过ssh手动工作。

但是考虑使用perl本身做匹配并切割而不是产生grep,那会更好。