将pgrep的输出转换为整数数组

时间:2018-07-22 13:40:52

标签: bash shell sh

我想将数字列表转换为整数数组。

@ n.sh

a=$(pgrep node)
echo $a

输出:

5889 6235 6626 6632

我尝试使用代码按空间将其拆分

#!/bin/bash

OIFS=$IFS;
IFS="|";

Pid=$(pgrep node);
PidArray=($Pid);

for ((i=0; i<${#PidArray[@]}; ++i)); do     echo "pid $i:${PidArray[$i]}"; done

IFS=$OIFS;

但是,字符串已经拆分成PidArray[0]

,而不是拆分

2 个答案:

答案 0 :(得分:1)

当我尝试时:

pid="1 2 3 4";pida=($pid);for ((i=0;i<${#pida[*]};i++)); do echo $i"="${pida[$i]};done
0=1
1=2
2=3
3=4

应该工作。

答案 1 :(得分:0)

在脚本顶部设置IFS="|"是完全错误的。您在告诉外壳程序将输入分隔为管道字符而不是空格。因此,您的数组分配是一个单个元素,其中包含空格。

顺便说一句,结尾的分号也没用。

#!/bin/bash

# Avoid creating a variable which is only used once
# Pid=$(pgrep node)
PidArray=($(pgrep node))

for ((i=0; i<${#PidArray[@]}; ++i)); do
    echo "pid $i:${PidArray[$i]}"
done