我在命令行上使用以下脚本来杀死假设的记事本进程(在Windows XP中使用KornShell(ksh),如果这很重要):
kill $(tasklist | grep -i notepad.exe | awk'{print 2}')
现在我拿这行,把它放到一个批处理文件c:\ temp \ testkill.bat中,以为我也应该能够通过运行批处理文件来终止进程。但是,当我运行批处理文件时,我得到以下关于不平衡括号的awk错误:
C:/温度> ./testkill.bat
C:\ Temp> kill $(tasklist | grep -i notepad.exe | awk'{print $ 2}')
awk:unbalanced()上下文是:
>>> {print $ 2})<<<
C:/温度>
所以当我通过批处理文件运行这个脚本时,为什么我收到关于不平衡括号的错误,我感到困惑,但是当我直接从命令行运行命令时没有问题?
(我不一定与这种杀死进程的方式联系在一起 - 我还想知道为什么我在命令行上写下以下内容:
任务列表| grep -i notepad.exe | awk'{print $ 2}'|杀
来自tasklist / grep / awk调用的进程ID似乎没有正确地通过管道传输来杀死。
答案 0 :(得分:2)
如果您有Korn shell,为什么要制作批处理文件?写一个shell脚本 - 这可能会帮到你很多。
我可以回答你的最后一个问题 - kill
不会将PID从标准输入中删除,而是在命令行上执行。您可以使用xargs
使其正常工作:
tasklist | grep -i notepad.exe | awk '{print $2}' | xargs kill