awk - 无法在expect脚本中使用awk : invalid command name "awk"

标签 awk expect

我正在尝试在 awk 中编写一个脚本来升级某些设备上的固件。我正在尝试使用 awk 读取节点列表,但由于某种原因它无法找到并执行 awk 命令,并且我不断收到错误 执行时命令名称“awk”无效 “awk {{'NR==$i' test.txt}}” (“for”正文第 2 行)。我对expect中的脚本编写很陌生,但是我看到其他人在expect中执行awk,我不知道为什么它说awk是一个无效的命令名。

#!/usr/bin/expect -f

set logfile [open logfile.txt "w"]
#set len [awk 'END {print NR}' test.txt]
set timeout -1
spawn $env(SHELL)
match_max 100000
for {set i 1} {$i <= 2} {incr i 1} {
   set node [awk {{'NR==$i' test.txt}}]
   send -- "./myconsole\r"
   expect "*Option-> "
   send -- "4\r"
   expect "*Firmware upgrade was successful for node"
   puts $logfile "Node ID $node success"
}

expect "*Option-> "

send -- "^D^C\r\r"

close $logfile

有人知道为什么 awk 无效吗?

最佳答案

您必须使用[exec awk ...]

关于awk - 无法在expect脚本中使用awk : invalid command name "awk",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20083386/

相关文章:

awk - 使用 awk 的行到列和列到行

r - 在 bash 或 R 中翻译每个第 N 个字符串的有效方法

linux - 如何使用linux Expect脚本连接到forticlient vpn

linux - 在期望脚本中的特定输出后执行 if 语句

Expect 脚本不适用于多个密码请求

bash - 无法使用 su 和 expect 脚本登录用户

用于在 AWK 中捕获具有一系列数字的数字的正则表达式

linux - 打印文件中的最后一个字段并将其用作另一个文件的名称

perl - 基于文本代码的 awk/Perl/Sed 列替换

Bash:expect + scp:多个文件出现问题