使用 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[@]}"
我必须制作一个脚本来比较 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[@]}"