Объявить переменную в Bash? - PullRequest
0 голосов
/ 20 июля 2011

Я подключен к моей БД из bash.Я делаю выборку из массива, и я хочу сохранить возврат в переменной.Как я могу это сделать?

Я сделал:

var=`"select count(*) from shop_tab where catalog <> ''" | mysql -h abcdcef.com --port=3306 --user=root --password=hbbfe shop`

Запрос возвращает число, но его нет в переменной.

Спасибо!

РЕДАКТИРОВАТЬ: Это работает с этой командной строкой:

myvar = $(echo "select count(*) from shop_tab where catalog <> '';" | mysql -h abcdcef.com --port=3306 --user=root --password=hbbfe shop)

Ответы [ 2 ]

4 голосов
/ 20 июля 2011

Более простой способ:

var=$(mysql -h abcdcef.com --port=3306 --user=root --password=hbbfe --batch --skip-column-names -Dshop -e "select count(*) from shop_tab where catalog <> ''")

Более того, я предварительно настрою использование функции, чтобы легко добавлять опции в команду MySQL без необходимости изменять весь ваш скрипт.

function MysqlQuery() {
    mysql -h abcdcef.com --port=3306 --user=root --password=hbbfe --batch --skip-column-names -D "$1" -e "$2";
}

va=$(MysqlQuery Shop "SELECT COUNT(*) FROM shop_tab WHERE catalog <> ''")
vaABC=$(MysqlQuery Shop "SELECT COUNT(*) FROM shop_tab WHERE catalog <> 'abc'")
vadef=$(MysqlQuery Shop "SELECT COUNT(*) FROM shop_tab WHERE catalog <> 'def'")
# ...

Я тоже нахожу это более читабельным ...

1 голос
/ 20 июля 2011

Я думаю, вы забыли echo в трубе? Как это:

var=`echo "select count(*) from shop_tab where catalog <> ''" | mysql -h abcdcef.com --port=3306 --user=root --password=hbbfe shop`
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...