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=)"
我在将此发送到 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
:
你的情况是:
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=)"