我在 MYSQL 表中有以下列:
ID START_TIME
51 2015-01-01 01:00:00
我在 Bash 中有以下 MySQL 查询:
Values=($(mysql -DHISTORIZATION -hlocalhost -uroot -pAdmin -se "SELECT ID, START_TIME FROM TABLE_NEW WHERE ID=51"));
当我尝试分配和打印这样的值时:
ID=Values[0];
START_TIME=Values[1];
echo $ID;
echo $ START_TIME;
它的打印方式如下:
51
2015-01-01
理想情况下,它应该像这样打印,这是所需的输出:
51
2015-01-01 01:00:00
当我打印时
echo ${Values[*]};
它打印:
51 2015-01-01 01:00:00
值包含三个元素,但它应包含两个元素。我认为这是由于"2015-01-01 01:00:00"中的空格字符而导致的问题,但是如何摆脱它?我将不改变IFS的答案。
谢谢。。
mysql 输出是制表符分隔的。
因此,这应该有效:
IFS=$'t' read -a Values < <(mysql -DHISTORIZATION -hlocalhost -uroot -pAdmin -se "SELECT ID, START_TIME FROM TABLE_NEW WHERE ID=51");
您可以使用连接日期和时间的变量。
echo ${value[*]};
2015-04-28 13:30:00
START_TIME=${value[0]}" "${value[1]}
我建议在 mysql 参数中使用 -N,以便它跳过列名。
这应该有效:
IFS=$'t'
Values=($(mysql -DHISTORIZATION -hlocalhost -uroot -pAdmin -se "SELECT ID, START_TIME FROM TABLE_NEW WHERE ID=51"))
ID=${Values[0]}
START_TIME=${Values[1]}
echo "$ID"
echo "$START_TIME"