Evgeny Mamaev Asked: 2019-10-13 03:26:53 +0800 CST2019-10-13 03:26:53 +0800 CST 2019-10-13 03:26:53 +0800 CST 管道 3 终端命令 772 我的任务是停止正在运行的进程并使用之前运行的相同命令再次运行它。 简而言之,我需要更改正在运行的程序的配置并重新启动它以应用更改。 我有一个 program.pid 文件,应用程序在其中存储其 PID。我的设置中的ps程序没有 a-p或类似的标志。 我想要做的是ps | grep通过我得到的 PID more program.pid。 问题是如何将第二个命令的结果作为第二个参数放入第一个命令中grep? bash pipe 1 个回答 Voted Best Answer user1686 2019-10-13T03:50:34+08:002019-10-13T03:50:34+08:00 大多数 shell 支持$(command)或`command`使用命令的输出作为变量。至少在 Bash 中,还有$(<file)读取文件内容的快捷方式,根本不需要调用任何子命令。 grep "$(cat program.pid)" pid=$(cat program.pid) grep "$pid" grep "$(< program.pid)" 但是,有一种更直接的方式可以在不使用 Linux 的情况下读取命令行ps- 您可以从/proc/<pid>/cmdline. 虚拟文件包含 NUL 分隔的参数,可以使用例如 Bash 的mapfile函数读取: mapfile -d "" args < /proc/$pid/cmdline 现在args包含一个单独的命令行参数数组,您可以将其用作: myprogram "${args[@]}"
大多数 shell 支持
$(command)
或`command`
使用命令的输出作为变量。至少在 Bash 中,还有$(<file)
读取文件内容的快捷方式,根本不需要调用任何子命令。但是,有一种更直接的方式可以在不使用 Linux 的情况下读取命令行
ps
- 您可以从/proc/<pid>/cmdline
. 虚拟文件包含 NUL 分隔的参数,可以使用例如 Bash 的mapfile
函数读取:现在
args
包含一个单独的命令行参数数组,您可以将其用作: