Bash 当awk命令';s参数正在模式中使用

Bash 当awk命令';s参数正在模式中使用,bash,shell,awk,Bash,Shell,Awk,我正在运行以下命令: ps -ef | awk -v piddd="$child_pid" '$2 ~ /\<piddd\>/ { print $3; }' ps -ef | awk -v piddd="$child_pid" '$2 ~ /piddd/ { print $3; }' 第一个变量有什么问题?不能使用语法为/pattern/的变量 如果要添加单词边界(并且您的awk版本支持语法),可以通过连接字符串来实现: ps -ef | awk -v piddd="$child_

我正在运行以下命令:

ps -ef | awk -v piddd="$child_pid" '$2 ~ /\<piddd\>/ { print $3; }'
ps -ef | awk -v piddd="$child_pid" '$2 ~ /piddd/ { print $3; }'

第一个变量有什么问题?

不能使用语法为
/pattern/
的变量

如果要添加单词边界(并且您的awk版本支持语法),可以通过连接字符串来实现:

ps -ef | awk -v piddd="$child_pid" '$2 ~ "\\<" piddd "\\>" { print $3 }'

不能使用语法为
/pattern/
的变量

如果要添加单词边界(并且您的awk版本支持语法),可以通过连接字符串来实现:

ps -ef | awk -v piddd="$child_pid" '$2 ~ "\\<" piddd "\\>" { print $3 }'

不需要解析
ps
实用程序的输出,只需获取子
pid
的父pid
PPID
ps
实用程序已经提供了此功能

ps-o ppid=-p$child\u pid

参数
-o ppid=
告诉
ps
只打印父pid。如果没有
=
,打印输出将包含标题
PPID


参数
-p$child\u pid
告诉
ps
要从变量
$child\u pid

标识的进程id获取进程信息,不需要解析
ps
实用程序的输出,只需获取子
pid
的父pid
PPID
ps
实用程序已经提供了此功能

ps-o ppid=-p$child\u pid

参数
-o ppid=
告诉
ps
只打印父pid。如果没有
=
,打印输出将包含标题
PPID


参数
-p$child\u pid
告诉
ps
从变量
$child\u pid
标识的进程id中获取进程信息,看起来您想要打印已知
$child\u pid
PPID
。您不需要重新发明轮子,只需运行
ps-o ppid=-p$child\u pid
。看起来您想要打印已知
$child\u pid
ppid
。您不需要重新发明轮子,只需运行
ps-oppid=-p$child\upid
ps -ef | awk -v piddd="$child_pid" '$2 == piddd { print $3 }'
ps -ef | awk '$2 ~ /'`echo "$child_pid"`'/ { print $3; }'

# or

ps -ef | awk '$2 ~ /'$child_pid'/ { print $3; }'

# or create function
function father_pid() { ps -ef | awk '$2 ~ /'$1'/ { print $3; }'; }

# use function
father_pid $child_pid