Как получить количество строк из переменной (из запроса MYSQL)? - PullRequest
1 голос
/ 14 марта 2010

Мой проблемный код:

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 ]

2 голосов
/ 14 марта 2010
TEST="$(echo "$testMYSQL" | wc -l)"

или

TEST="$(wc -l <<< "$testMYSQL")"
2 голосов
/ 14 марта 2010

используйте синтаксис $() всякий раз, когда это возможно

$ 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';

...