Awk
無法從 ps 的輸出構造命令
我希望得到 httpd 程序,然後得到
bin\apachectl
命令/文件 -v 輸出輸出:
ps -eo cmd | grep httpd | grep -v grep /home/myapache/app/httpd/bin/httpd -k start /home/myapache/app/httpd/bin/httpd -k start /home/myapache/app/httpd/bin/httpd -k start
的輸出
ps -eo cmd | grep httpd | grep -v grep | head -1 | awk '{print $1}'
是/home/myapache/app/httpd/bin/httpd
我的要求是使用上面的命令觸發以下命令
ps
。/home/myapache/app/httpd/bin/apachectl -v
以下是我到目前為止所能得到的。
dirname `ps -eo cmd | grep httpd | grep -v grep | head -1 | awk '{print $1}'` && echo -n "/apachectl -v
輸出:
/home/myapache/app/httpd/bin /apachectl -v
不幸的是
/apachectl -v
,當我希望它出現在下一行時,它出現在下一行,如下所示:
ps
要求通過最好使用 posix建構以下命令來執行以下命令:/home/myapache/app/httpd/bin/apachectl -v
假設
ps -eo cmd
做你想要的,看起來你需要的是:"$(ps -eo cmd | awk 'sub("/[h]ttpd[^/]*$",""){print; exit}')"/apachectl -v
您可以像這樣在一行中執行它
PS_OUTPUT=`dirname $(ps -eo cmd | grep [h]ttpd | head -1|awk '{print $1}')`; APACHE='apachectl -v'; myCMD='$OUTPUT/$APACHE'; eval $myCMD
eval
: 像 shell 命令一樣執行參數