expect with exec和awk不显示值

expect with exec和awk不显示值,awk,tcl,Awk,Tcl,当使用expect时,使用exec和awk设置变量值不会抛出错误,但也不会提取值 我的代码片段如下 set routername [lindex $argv 0] set routerip "exec awk {{ /$routername/print \$2 }} /tmp/RIPTable" puts "router ip is : $routerip\n" routerip的值应为127.0.0.1,因为这是文件中名称的IP 输出如下所示 路由器ip是:exec awk{{/$

当使用expect时,使用
exec
awk
设置变量值不会抛出错误,但也不会提取值

我的代码片段如下

set routername    [lindex $argv 0]
set routerip "exec  awk {{ /$routername/print \$2 }} /tmp/RIPTable"

puts "router ip is : $routerip\n"
routerip的值应为
127.0.0.1
,因为这是文件中名称的IP

输出如下所示
路由器ip是:exec awk{{/$routername/print\$2}}/tmp/RIPTable


设置routerip时有什么问题?

您应该这样写:

set routerip [exec awk "/$routername/ { print \$2 }" /tmp/RIPTable]

你应该这样写:

set routerip [exec awk "/$routername/ { print \$2 }" /tmp/RIPTable]

它失败,无法打开文件
awk:cannotopenfile/tmp/RIPTable
该文件的权限最初为744,改为777以进行尝试,但如上所述失败。我将使用
-v
选项将路由器名称传递到awk中:该选项允许我们在awk脚本主体周围保留非插值引号:
set routerip[exec awk-v“rname=$routername”{$0~rname{print$2}}/tmp/RIPTable]
@glennjackman我继续收到相同的错误。无法使用awk打开文件。
awk:在执行“exec awk-v”rname=$routername“{$0~rname{print$2}/tmp/RIPTable”时,无法打开文件/tmp/RIPTable源行号1,从“set routerip[exec awk-v”调用rname=$routername“{$0~rname{print$2}}/tmp/RIPTable]”(文件“/main.exp”第80行)
这与expect无关。该文件存在吗?您的用户有权限读取它吗?权限为777。文件RIPTable文件的条目为
asrip01 127.0.0.1 192.168.0.2 TEST asrip02 127.0.0.1 192.168.0.11 STAGE
它失败,无法打开文件。
awk:cannot open file/tmp/RIPTable
权限ile最初是744,将其更改为777以进行尝试,但如上所述失败。我将使用
-v
选项将路由器名称传递到awk:这允许我们在awk脚本主体周围保留非插值引号:
set routerip[exec awk-v“rname=$routername”{$0~rname{print$2}/tmp/RIPTable]
@glennjackman我继续收到相同的错误。无法使用awk打开文件。
awk:在执行“exec awk-v”rname=$routername”{$0~rname{print$2}}/tmp/RIPTable时,无法打开文件/tmp/RIPTable源代码行号1,从“set routerip[exec awk-v”中调用“$routername”{$0~rname{print$2}”/tmp/RIPTable](文件“/main.exp”第80行)
这与expect无关。该文件存在吗?您的用户是否有读取权限?权限为777。文件RIPTable文件的条目为
asrip01 127.0.0.1 192.168.0.2测试asrip02 127.0.0.1 192.0.11 STAGE