Назад | Перейти на главную страницу

Выберите удаленную базу данных из bash

Я как бы новичок в сценариях bash / shell, и я пытаюсь удаленно выбрать из базы данных mysql и проверить, существует ли запись или нет. На основании ответа сделаю кое-что.

Это то, что у меня есть как команда

mysql -u mysql -pMysql123 -h xxx.xxx.xxx.xxx MYDBNAME -e "select count(column) from TABLE where column=1234;"

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

#!/bin/bash

count=mysql -u mysql -pMysql123 -h xxx.xxx.xxx.xxx MYDBNAME -e "select count(column) from TABLE where column=1234;"

if [ $count -gt 0 ]
then
     echo " greater that 0 "
else
     echo " lower than 0 "
fi

Когда я выполняю сценарий выше, вывод

$ ./check.sh

./check.sh: строка 3: -u: команда не найдена

./check.sh: строка 5: [: -gt: ожидается унарный оператор

ниже 0

Ценю любую помощь в этом. Спасибо.

вам нужна подоболочка. попробуй это:

count=$(mysql -u mysql -pMysql123 -h xxx.xxx.xxx.xxx MYDBNAME -sse "select count(column) from TABLE where column=1234;")

if [ $count -gt 0 ]
then
     echo " greater that 0 "
else
     echo " lower than 0 "
fi

также обратите внимание на -s вариант:

--silent, -s
Silent mode. Produce less output. This option can be given multiple times to produce less and less output.