подключиться к базе данных mysql, выполнить запрос и экспортировать результат в скрипт bash

0

Я хочу подключиться к mysql databse и выполнить некоторые запросы и экспортировать его результат в varibale, и все это нужно сделать полностью с помощью сценария bash

У меня есть код фрагмента, но он не работает.

#!/bin/bash

BASEDIR=$(dirname $0)
cd $BASEDIR

mysqlUser=n_userdb
mysqlPass=d2FVR0NA3
mysqlDb=n_datadb

result=$(mysql -u $mysqlUser -p$mysqlPass -D $mysqlDb -e "select * from confs limit 1")

echo "${result}" >> a.txt

в чем проблема?

  • 0
    Есть ли причина, по которой вы не просто перенаправляете вывод mysql в файл напрямую? Кроме того, что не работает и каким образом (сообщения об ошибках?). Вы также должны заключить в кавычки все расширения переменных.
  • 0
    проверьте этот предыдущий вопрос stackoverflow.com/questions/42865795/…
Показать ещё 8 комментариев
Теги:

2 ответа

1
Лучший ответ

Проблема была решена в чате, используя правильный пароль.

Если вы хотите получить только данные, используйте mysql с -NB (или --skip-column-names и --batch).

Кроме того, сценарий должен указывать разложения переменных, или будут проблемы с именами пользователей/паролями, содержащими символы, которые являются особыми для оболочки. Кроме того, имена переменных верхнего регистра обычно зарезервированы для системных переменных.

#!/bin/sh

basedir=$(dirname "$0")

mysqlUser='n_userdb'
mysqlPass='d2FVR0NA3'
mysqlDb='n_datadb'

cd "$basedir" &&
mysql -NB -u "$mysqlUser" -p"$mysqlPass" -D "$mysqlDb" \
      -e 'select * from confs limit 1' >a.txt 2>a-err.txt

В идеале, вы должны использовать файл my.cnf для настройки имени пользователя и пароля.

См. Например,

0

Сделай это:

result=$(mysql -u $mysqlUser -p$mysqlPass -D $mysqlDb -e "select * from confs limit 1" | grep '^\|' | tail -1)

Операция $() Bash имеет проблемы с обработкой переменных, которые содержат несколько строк, поэтому вышеупомянутый взломать только интересную часть: данные

  • 0
    Bash не имеет проблем с переменной, содержащей несколько строк.
  • 0
    Я проверил и не работал
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню