【发布时间】:2020-01-23 01:09:40
【问题描述】:
#!/usr/bin/expect -f
set name [lindex $argv 0]
send "grep $name /usr/local/bin/c | awk '{print $3}' | awk '{print substr($1,10)}'\r"
spawn grep $name /usr/local/bin/c | awk '{print $3}' | awk '{print substr($1,10)}'
我尝试过“\”转义引号和特殊符号。它不起作用。我也尝试过发送和生成。不工作。如果我只运行 grep........... 命令,它会返回我需要的内容。关于如何从我的期望文件中运行它的任何帮助都会很棒。谢谢。
【问题讨论】:
-
首先简化您的命令 - 您不需要 grep、2 awks 和管道来执行此任务。如果您要在命令行上运行它,它将是
awk -v n="$name" '$0 ~ n{print substr($3,10)}' /usr/local/bin/c,所以这就是您应该尝试使用expect 开始工作的命令。我会先尝试让像awk 'BEGIN{print "hello world"}'这样更简单的命令来工作。 -
谢谢。我仍然收到错误:无法读取“0”:执行“spawn awk -v n="perferx" '$0 ~ n{print substr($3,10,5)}' /usr/local/bin/ 时没有这样的变量C”。关于尝试什么的任何想法。谢谢。
-
我并不是要建议您可以简单地将 awk 脚本插入到期望脚本中并且它会起作用,我只是说这是开始的命令行脚本。我已经给出了尝试的想法 - 从尝试让
awk 'BEGIN{print "hello world"}'等更简单的命令开始工作