Экспорт переданной по каналу команды, не оценивая вывод?

Я пытаюсь установить export это было бы эффективно kill процесс на основе PID это pgrep подача это. Выполнение команды kill $(pgrep myAppName) кажется, работает (если 'myAppName' были названием фактического рабочего процесса)... Но как Вы сохранили бы эту команду как экспортируемую переменную среды? Каждое изменение команды, о которой я мог думать, кажется, пытается оценить pgrep myAppName во что-то как 20137 (или подобное значение PID), и выполнение экспортируемых переменных работ в, первый раз, но очевидно не будет работать после этого начиная с экспортируемой команды, на самом деле kill 20137, где тот процесс был уже завершен.

Как я могу заставить это быть правильно сохраненным в переменной, таким образом, я могу просто ввести что-то как $KILL_APPNAME для уничтожения того процесса каждый раз, команда выполняется?

0
21.03.2015, 10:01
1 ответ

Что я подумал Вы пытаетесь сделать потребности Eval для работы:

THING="eval kill \$(pgrep myAppName)"
$THING

, но это неловко и не работает По умолчанию во всех снарядах (например, это не работает по умолчанию в ZSH , хотя вариант может быть установлен, чтобы сделать его работать). Что бы вы ни пытались сделать, скорее всего, лучше решить с чем-то более чистым и проще, как функция:

kill_my_app() {
    kill $(pgrep myAppName)
}
kill_my_app

или, как другие указали в комментариях, просто используйте pkill или killlall Что именно то, что вам нужно.

2
28.01.2020, 02:36

Теги

Похожие вопросы