如何从变量(来自MYSQL查询)获取行数?

时间:2010-03-14 04:54:51

标签: linux bash shell newline

我有问题的代码:

testMYSQL=`mysql -u $mysqlUser -p$mysqlPass -h $mysqlHost --skip-column-names --batch -D $mysqlDB -e "SELECT $select FROM $mysqlTable WHERE nameTXT='test';"`       

$ testMYSQL现在包含:

test
test
test

然后我这样做:

TEST=$(echo $testMYSQL | wc -l)
echo "$TEST"

我认为这样可行,但事实并非如此,它会返回1

但如果我把它放到$ testMYSQL:“test \ ntest \ ntest”中它会说3 ...

这是怎么回事? MYSQL不使用新行吗?

PS,我知道我可以使用for循环来循环,然后按行计算行,但我希望有更简单的解决方案,如wc

2 个答案:

答案 0 :(得分:2)

尽可能使用$()语法

$ testMYSQL=$(mysql -u $mysqlUser -p$mysqlPass -h $mysqlHost --skip-column-names --batch -D $mysqlDB -e "SELECT $select FROM $mysqlTable WHERE nameTXT='test';" )
$ set -- $testMYSQL
$ echo ${#}

另外,如果你只想要计算多少nameTXT是“test”,为什么不在mysql中呢?像select count($select) from $mysqlTable where nameTXT='tests';

这样的东西

答案 1 :(得分:2)

TEST="$(echo "$testMYSQL" | wc -l)"

TEST="$(wc -l <<< "$testMYSQL")"