Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如何从变量(MYSQL查询)中获取行数?_Linux_Bash_Shell_Newline - Fatal编程技术网

Linux 如何从变量(MYSQL查询)中获取行数?

Linux 如何从变量(MYSQL查询)中获取行数?,linux,bash,shell,newline,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 "

我的问题代码:

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不使用新行吗

顺便说一句,我知道我可以使用for循环来循环行数,然后用这种方式计算行数,但我希望有一个更简单的解决方案,如wc

尽可能使用$syntax

$ 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数量,为什么不在mysql中进行呢?类似于select count$select from$mysqlTable where nameTXT='tests'

尽可能使用$syntax

$ 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数量,为什么不在mysql中进行呢?类似于select count$select from$mysqlTable where nameTXT='tests'


可能是因为我不知道你可以:P,但是的,这是旧代码,但我不明白为什么wc-l在MYSQL变量中完成时可以工作,但它不能在后面…哦,好吧,只要我得到计数:谢谢@Mint:因为如果你的变量周围没有引号,那么所有与$IFS中的任何字符匹配的字符都会被替换为一个空格。可能是因为我不知道你可以:P,但是是的,这是一段旧代码,但是我不明白为什么wc-l在MYSQL变量内部工作,但在后者上不工作……哦,好吧,只要我得到了计数:谢谢@Mint:因为如果变量周围没有引号,那么所有与$IFS中任何内容匹配的字符都将被替换为一个空格。您需要引用变量。您需要引用变量。
TEST="$(wc -l <<< "$testMYSQL")"