首页 > 解决方案 > Bash循环不添加到数组

问题描述

我正在尝试将元素添加到 bash 中的数组中。我正在查询并循环查询。

delete_arr=()
delete_arr+=("test")
mysql -e "$sql_statement" | while read directory_name; do 
if [ $counter -gt 0 ]
   then
     delete_arr+=($directory_name)
fi
let counter=counter+1
done

 for i in "${delete_arr[*]}"; do echo "$i"; done

我得到的唯一输出是test. 我应该得到更多的数据。查询有效,数据被添加到循环中的数组中,但是当我跳出循环时,数组只包含test. 我没有做任何事情来重置数组。

标签: bash

解决方案


在管道中,您正在隐式创建一个具有自己命名空间的新子外壳。尝试避开管道:

delete_arr=()
delete_arr+=("test")
while read directory_name
do 
    if [ "$counter" -gt 0 ]
    then
        delete_arr+=("$directory_name")
    fi
    counter=$((counter+1))
done < <(mysql -e "$sql_statement")

for i in "${delete_arr[@]}"; do echo "$i"; done

推荐阅读