【发布时间】:2013-09-05 09:10:54
【问题描述】:
我的 Bash 脚本从 MySQL 创建一个数组:
info_tmp=$(mysql --batch --silent -u root -ppassword database -e "SELECT id,info1,info2 FROM table WHERE id=1")
info=($(for i in $info_tmp;do echo $i;done))
info1=${info[1]}
我的问题是,如果 info1 在数据库中是一个空字符串,那么 $info1 就变成了 info2。 如何将空字符串放入 $info 数组?
Mysql Database:
Id | info1 | info2
1 | | data2
2 | data3 | data4
$info_tmp
1 data2
2 data3 data4
感谢您的回答
这是最终有效的代码 (@Barmar):
IFS="|"
info_tmp=$(mysql --batch --silent -u root -ppassword database -e "SELECT CONCAT_WS('|', id,info1,info2) FROM table WHERE id=1")
info=(${info_tmp// / })
info1=${info[1]}
【问题讨论】:
-
你能提供一些
info_tmp变量的例子吗? -
@Aleks-DanielJakimenko 问题是当数据库中的一列是空字符串时,bash 只会看到一对 TAB 字符,它被视为一个分隔符而不是两个分隔符空值。