Я использую следующий скрипт в командной строке, чтобы убить гипотетический процесс блокнота (используя KornShell (ksh) в Windows XP, если это имеет значение):
kill $ (список задач | grep -i notepad.exe | awk '{print 2}')
Теперь я беру эту строку и помещаю ее в пакетный файл c: \ temp \ testkill.bat, думая, что я должен также быть в состоянии завершить процесс, запустив пакетный файл. Однако, когда я запускаю командный файл, я получаю следующую ошибку awk по поводу несбалансированных скобок:
C: / Temp> ./testkill.bat
C: \ Temp> kill $ (список задач | grep -i notepad.exe | awk '{print $ 2}')
awk: unbalanced () Контекст:
>>> {print $ 2}) <<< <br>
C: / Temp>
Так что я озадачен тем, почему я получаю эту ошибку о несбалансированных скобках, когда я запускаю этот сценарий через командный файл, но у меня нет проблем, когда я запускаю команду непосредственно из командной строки?
(я не обязательно привязан к такому способу уничтожения процесса - мне также интересно, почему я пишу в командной строке следующее:
список задач | grep -i notepad.exe | awk '{print $ 2}' | убить
Идентификатор процесса, который получается из вызовов списка задач / grep / awk, похоже, неправильно передан для уничтожения.