mysql - 逐行解析 mysql 结果并将每一行转换为数组 - bash 脚本

标签 mysql arrays bash shell

我正在使用 bash 脚本,由于某些原因我只能使用 bash 而不是 php 或 perl 等。

我使用此代码从 mysql 获得了一些结果,并将它们保存在名为 result 的变量中:

result=$(mysql -NB -u "$mysqlUser" -p"$mysqlPass" -D "$mysqlDb" -e "select * from sites" )

这是结果:

1 news.bitcoin.com    NULL 840119 stopped 1509636516 1509636688 0 0 0 0
2 blog.blockchain.com NULL NULL   stopped NULL       0          0 0 0 0

现在我想逐行解析此结果并将每一行转换为数组并以这种方式访问​​它们:

echo $results[0,0] # 1
echo $results[0,3] # 840119
echo $results[0,6] # 1509636688
echo $results[1,1] # blog.blockchain.com
echo $results[1,3] # NULL
echo $results[1,6] # 0

根据this post我们可以像多维一样通过 andice 声明数组。

您能帮我解决这个问题,或者告诉我任何其他可能的方法来完成这个任务吗?

提前致谢

最佳答案

忽略字段会不匹配的偏执,您可以尝试遍历数据并通过强力将其分配给并行数组。

row=0
declare -a A B C D 
mysql -NB -u "$mysqlUser" -p"$mysqlPass" -D "$mysqlDb" -e "select * from sites" |
while read a b c d # ...
do (( row++ ))
   A[$row]="$a"
   B[$row]="$b"
   C[$row]="$c"
   D[$row]="$d"
done

请使用比 a、b、c 更好的名称...但是,假设字段 2 是 fqdn,您可以说

echo ${FQDN[2]} 

快速从该行获取该字段。整个表格都可以立即访问...但是格式错误的一行将会搬起石头砸你的脚。

关于mysql - 逐行解析 mysql 结果并将每一行转换为数组 - bash 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51133459/

相关文章:

mysql - 对于以下 mysql 查询,我得到了一个输出。但是如何修改查询以便获得一定日期范围的结果

linux - 如何为所有用户设置所有 ulimits 无限制?

excel - 如何从 VBA (Excel) 调用 Bash 脚本

java - 字符串数组中的随机元素

bash - 为什么 `for i do cmd; done` 中不需要分隔符

.net - 运行MySql查询后出现缺少参数错误

PHP 统计每天创建一行的站点 View

mysql - 无法从网络服务器访问 AWS RDS MySQL

c - 基于二维数组 : unexpected behavior 中的列在 C 中进行 qsort

javascript - 将整数字符串拆分为数组 - 元素无法被识别