2013-07-23 25 views
0

我很高兴看到写一个bash脚本与MySQL交互是多么容易。
但是,试图这样的:如何从bash脚本中有效地处理mysql的结果集?

#!/bin/bash 

res=`mysql -u $USER -p$PASS students <<EOF | tail -n +2 
SELECT name FROM table WHERE age = 20 limit 1; 
EOF` 

for d in $res; 
do 
echo Result : $d 
done 

如果结果是 “约翰·史密斯” 我得到:
Result: John
Result: Smith

我怎样才能解决这一问题的空间?
它似乎将它视为2值,而它是单列。

+0

这就是bash for loop的工作方式......你不能指望在空间里用空格分隔的字段中有空格。 –

+0

@CarlNorum:那么我应该如何处理'res',它是mysql的结果集呢? – Jim

回答

3

一种方式做你问什么是循环前添加此:

IFS=$'\n' 

这将改变默认的bash内部字段分隔符(IFS),其默认工作用空格,制表符和新行。

我的例子只适用于新行,因为这可能是你要找的。