我有问题的代码:
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
答案 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")"