bash - 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
. 我没有做任何事情来重置数组。
解决方案
在管道中,您正在隐式创建一个具有自己命名空间的新子外壳。尝试避开管道:
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
推荐阅读
- selenium - Eclipse 需要花费数小时来构建 maven 项目。进度状态始终显示为 78%。为什么?
- python - 在 Python 中的 Plotly 中按类别设置树形图颜色
- scheme - 如何将一个函数解析为方案中的另一个函数
- firebase - Firebase A/B 测试显示 0 个暴露的用户,但有数据
- snowflake-cloud-data-platform - 在 Talend tdbconnection 中为 Snowflake 设置 Multi 语句为 0
- javascript - TypeError: Router.use() 需要一个中间件函数,但在路由器中有一个未定义的问题
- algorithm - 查找包含列表中所有数字的给定列表的最小子列表的长度
- r - 循环问题:根据增加的值创建名称以读取 CSV 文件
- flutter - 我正在尝试从我的 Firebase 实时数据库中检索数据,但它让我为空?
- java - 如何使用适用于 android 11 的媒体存储 api 将视频或图像文件从一个位置复制到另一个位置