使用 echo 和 cut 将命令输出分配给变量

Assign command output to variable with echo and cut

我必须制作一个脚本来比较 PID 和 PPID 以了解谁生成谁并制作输出日志 "process ... generates process ..." 快完成了,但是 我不能只获取 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

我的问题出在剪切命令的那部分,因为它不起作用:

pid=$( echo "$i" | cut '-d" "' '-f1' )

尝试使用 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[@]}"