导出管道命令而不评估输出?

导出管道命令而不评估输出?

我正在尝试设置一个基于提供它的 PID 的export有效进程。运行该命令似乎有效(如果killpgrepkill $(pgrep myAppName)'我的应用程序名称'是实际运行进程的名称)...但是如何将此命令保存为导出的环境变量?我能想到的命令的每个变体似乎都会尝试评估pgrep myAppName为类似的值20137(或类似的 PID 值),并且第一次运行导出的变量可以工作,但之后显然不会工作,因为导出的命令实际上是kill 20137,该进程已经终止。

如何才能将其正确保存在变量中,以便我可以在$KILL_APPNAME每次运行命令时键入类似杀死该进程的内容?

答案1

我什么思考您正在尝试做需要做的事情eval以便工作:

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

zsh但它很尴尬,并且默认情况下在所有 shell 中都不起作用(例如,尽管可以设置一个选项使其起作用,但默认情况下它不起作用)。无论你想要做什么,很可能用更干净、更简单的东西(比如函数)来更好地解决:

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

或者,正如其他人在评论中指出的那样,只需使用pkillorkillall即可完全满足您的需要。

相关内容