小编jus*_*lin的帖子

如何将“pgrep”的输出与“ps -p”一起使用?

我正在尝试显示 Conkys 进程的正常运行时间。如果我在终端中一次一行输入以下内容,那么一切都会正常工作,并且我会得到我想要的结果。

getPID=$(pgrep -f conky)

conkyPID=$(ps -p $getPID -o etime=)

echo $conkyPID
Run Code Online (Sandbox Code Playgroud)

天真的我以为 bash 脚本会是这样的。

#!/bin/bash
getPID=$(pgrep -f conky)
conkyPID=$(ps -p "$getPID" -o etime=)
echo "$conkyPID"
Run Code Online (Sandbox Code Playgroud)

我问了几个朋友,我收到的最有用的信息是我需要一个命令行分隔符,我认为它是一个|. 我尝试了很多括号、引号和管道的变体,但都无济于事。在我的实验中,第二行似乎不知道我在前一行中设置了变量“getPID”。当我运行脚本时,我得到了。

error: process ID list syntax error
Run Code Online (Sandbox Code Playgroud)

运行脚本的输出bash -x

ricky@Shitmobile:~$ bash -x conkypid.sh
++ pgrep -f conky 
+ getPID='45990
153098'
++ ps -p '45990 153098' -o etime=
error: process ID list syntax error 
Run Code Online (Sandbox Code Playgroud)

command-line bash scripts conky

3
推荐指数
1
解决办法
566
查看次数

标签 统计

bash ×1

command-line ×1

conky ×1

scripts ×1