期待脚本 - awk 说变量不存在

Expect Script - awk say variable doesn't exist

#!/usr/bin/expect -f

set name [lindex $argv 0]

send  "grep $name /usr/local/bin/c | awk '{print }' | awk '{print substr(,10)}'\r"
spawn  grep $name /usr/local/bin/c | awk '{print }' | awk '{print substr(,10)}'

我试过用“\”转义引号和特殊符号。它不起作用。我也试过发送和产卵。不起作用。如果我 运行 只是行上的 grep...... 命令,它 returns 我需要的。任何有关如何从我的期望文件中将其获取到 运行 的帮助都会很棒。谢谢

单引号在expect中没有特殊含义。使用大括号代替同样的效果:

spawn awk -v n="perferx" {[=10=] ~ n {print substr(,10,5)}} /usr/local/bin/c
# .......................^..............................^

参考:Tcl syntax rules, #6

No substitutions are performed on the characters between the braces


此外,如果没有看到您对输出做了什么,也许您不需要 spawn

set output [exec awk -v n="perferx" {[=11=] ~ n {print substr(,10,5)}} /usr/local/bin/c]

现在,您可以对 $output

进行简单的字符串解析