我必须制作一个比较PID和PPID的脚本,以了解谁生成了谁并制作了输出日志,例如 “过程……产生过程……” 快完成了,但是 我不能仅将PID值存储到数组中并进行比较,因为我以错误的方式使用了命令替换 谢谢大家的帮助,对不起,我是bash和这个地方的初学者。
我的代码:
#!/bin/bash
IFS=$'\r\n'
GLOBIGNORE='*'
thispid=$$
ps -opid= -oppid= -ocommand= -c > processi.txt
eval 'array=($(<processi.txt))'
for i in "${array[@]}"
do
pid=$( echo "$i" | cut -d" " -f1 )
echo $pid
done
仅使用ps命令,我的输出如下:
618 616 -bash
2668 618 bash
629 628 -bash
1185 629 man
1186 1185 sh
1187 1186 sh
1190 1187 sh
1191 1190 less
我的问题是cut命令的那部分,因为这不起作用:
pid=$( echo "$i" | cut '-d" "' '-f1' )
答案 0 :(得分:0)
使用process substitution进行尝试:
pids=()
ppids=()
while read pid ppid _; do
pids+=( $pid )
ppids+=( $ppid )
done < <(ps -opid= -oppid= -ocommand= -c)
printf '%s\n' "${pids[@]}"
printf '%s\n' "${ppids[@]}"