我需要读取我的命令输出到数组并存储它们以便在我的脚本中使用。我的脚本是;
let i=0
declare -a array
$PS -ef|$GREP -v grep|$GREP $NAME | $SED -n 's/.*-q\s\([0-9]\+\).*/\1/p' | while read line; do
array[$i]=$line
echo ${array[$i]}
(( i++ ))
echo ${#array[@]}
done < <($PS -ef|$GREP -v grep|$GREP $NAME | $SED -n 's/.*-q\s\([0-9]\+\).*/\1/p')
echo ${#array[@]}
因此,当循环退出数组的大小因子shell而变为0时。有办法解决这个问题吗?
答案 0 :(得分:0)
您的管道两端似乎有相同的输入:
foo | while read line; do
...
done <( foo )
尝试删除第一个以使while
循环不在子shell中执行:
while read line; do
...
done <( foo )
如果您使用的是bash 4或更高版本,则可以通过调用readarray
替换while循环:
readarray array <( foo )