我正在尝试显示 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)