我正在循环中读取一个文件,每次迭代都有字符串。我需要将此元素添加到数组中但在新行中
我使用blow cmd ARRAYNAME + = $ ELEMENTNAME
但是会发生什么事情将thet元素添加到最后一个元素但用“”而不是行
分隔while IFS='' read -r line || [[-n "$line" ]];do
MAPPING=`echo $line | grep -e session -e sub | cut -d: -f3 | grep -i ","`
MAPPINGMAT+=("$MAPPING")
echo ${MAPPINGMAT[*]}
done < "$1"
输出
1
1 2
1 2 3
但我需要它
1
2
3
答案 0 :(得分:2)
使用括号:
ARRAYNAME+=("$ELEMENTNAME")
将项目附加到ARRAYNAME
。
您看到以下输出的原因
1
1 2
1 2 3
是你在每次迭代中在循环中打印整个数组。因此echo ${MAPPINGMAT[*]}
不应该在循环中。将其替换为简单的echo "$MAPPING"
。
答案 1 :(得分:1)
使用parens和引号,我将整行作为数组元素,如下所示:
declare -a arr
while read -r line; do
arr+=("$line")
done < input
然后我在arr
中得到每一行,如下所示:
for(( i=0; i<${#arr[@]}; i++ )); do
echo ${arr[$i]}
done