我正在使用 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/