awk里面期待

Awk inside expect

我在将此发送到 expect 时遇到错误

send "someagent_id=`ps aux | grep someagent| grep -v grep | awk '{print }'`\r"

错误:

can't read "2": no such variable
    while executing
"send "someagent_id=`ps aux | grep someagent| grep -v grep | awk '{print }'`\r""

如果您只需要某个进程的 PID,则不需要所有这些乱七八糟的东西:ps aux | grep someagent| grep -v grep | awk '{print }'.

您可以通过 pgrep:

获取进程 PID

你的情况是:

send "someagent_id=$(pgrep SOMEAGENT)\r" 

试试这个:

   someagent_id=$(ps aux | grep someagent| grep -v grep | awk '{print }'\r)
   send $someagent_id

`` --> 以前的版本 $ --> 新版本。两者做同样的事情

试试这个

send "someagent_id=`ps aux | grep someagent| grep -v grep | awk '{print $2}'`\r"

而且这个只有 1 个管道的版本可能更好

send "someagent_id=`ps aux | awk '/someagent/ && ! /awk/ {print $2}'`\r"

有 ps 个选项

 ps -C someagent -o pid=

 send "someagent_id=$(ps -C someagent -o pid=)"