Linux Bash脚本中的数组长度为1

Linux Bash脚本中的数组长度为1,linux,bash,Linux,Bash,在下面的代码中,数组长度为1 有人能解释为什么grep输出会显示在每一行中,但当它存储在数组中时,数组长度将为1 如何显示读取数组的每一行 #!/bin/bash NUM=() SHORT_TEXT=() LONG_TEXT=() #cat /tmp/dummy2 | while read NUM do LONG_TEXT+=$(grep $NUM -A4 RtpLogShm.Msg | grep -vi abate | grep ^LG) done < /tmp/

在下面的代码中,数组长度为1

有人能解释为什么grep输出会显示在每一行中,但当它存储在数组中时,数组长度将为1

如何显示读取数组的每一行

#!/bin/bash

NUM=()
SHORT_TEXT=()
LONG_TEXT=()

#cat /tmp/dummy2 | 
while read NUM 
do
    LONG_TEXT+=$(grep $NUM -A4 RtpLogShm.Msg | grep -vi abate | grep ^LG)
    done < /tmp/dummy2

    #cat /tmp/dummy1 | 
    while read LINE
    do
        NUM+=$(echo $LINE | awk -F':' '{print $1}')
        SHORT_TEXT+=$(echo $LINE | awk -F':' '{print $2}')
        done < /tmp/dummy1

        printf "[%s]\n" "${LONG_TEXT[@]}"
    done
done
#/bin/bash
NUM=()
短文本=()
长文本=()
#cat/tmp/dummy2|
当读取NUM时
做
LONG_TEXT+=$(grep$NUM-A4 RtpLogShm.Msg | grep-vi abate | grep^LG)
完成
在bash中,附加到数组的语法是(假设我们希望将存储在
${new_element}
中的元素附加到现有数组
${array[@]}
):


您没有将LONG_测试创建为数组-请参阅本文了解如何将结果存储为数组-
array=("${array[@]}" "${new_element}")