我想将数字列表转换为整数数组。
@ 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]
答案 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