MySQL查询在Bash脚本中意外分裂

时间:2017-07-07 19:19:18

标签: mysql bash

我遇到问题而不了解根本原因是什么。

我有一个包含这三个字段的表:

______________________________________________
|   cid    |    order_id    |    TxRefNum    |
----------------------------------------------

我在我的bash脚本中进行一个简单的调用(实际上没有其他代码可以开始)

#!/bin/bash

mysql --login-path=main-data -e "SELECT 
    cid,
    order_id,
    TxRefNum 
FROM database.orders_temp" |

while read this that other; do

    echo "$this  ||  $that  ||  $other"
done

我希望看到以下内容:

__________________________________________________________
|    29    |    F0VIc - CHATEAU ROOFIN    |   5555555    |
----------------------------------------------------------

相反,我的脚本将字符串$that拆分为两个不同的字符串。回声实际上是:

___________________________________________________
|    29    |    F0VIc    |    - CHATEAU ROOFIN    |
---------------------------------------------------

在while循环中设置变量时是否需要设置分隔符?我真的很难过!

1 个答案:

答案 0 :(得分:1)

Getting output from the mysql command formatted in an intelligent way is problematic。在你的情况下,bash将解释为分隔符。你需要以不同的方式分裂。我能够让这个工作。您还会在查询中注明|,以及在{ppe}的IFS

#!/bin/bash

IFS='|' # set the delimiter
mysql --login-path=main-data -e "SELECT
    29 as cid, '|',
    'F0VIc - CHATEAU ROOFIN' as order_id,
    '|',
    5555555 as TxRefNum
FROM dual" |
while read this that other; do
    echo "$this  ||  $that  ||  $other"
done