Bash-SQL выводит запрос в переменную
Im новый в сценарии bash. Я хочу сохранить выходные данные sql-запроса в переменной, но
на самом деле я должен подключиться для каждого запроса к mysql с:
mysql -u $MYUSER -p$MYPASS -D database
и хотите сохранить каждый вывод в переменной seperatly
образец запроса: SELECT domain FROM domains WHERE user='$USER'
to
$variable1 = FIRST_OUTPUT
$variable2 = 2ND_OUTPUT
спасибо
3 ответов
принято от bash script-выберите из базы данных в переменную, вы можете прочитать результат запроса в переменную.
пример
mysql> SELECT * FROM domains;
+-------+---------+
| user | domain |
+-------+---------+
| user1 | domain1 |
| user2 | domain2 |
| user3 | domain3 |
+-------+---------+
использование
$ myvar=$(mysql -D$MYDB -u$MYUSER -p$MYPASS -se "SELECT domain FROM domains")
$ echo $myvar
domain1 domain2 domain3
echo
является командой bash для вывода. Вы можете тогда сплит $myvar
в отдельные переменные:
$ read var1 var2 var3 <<< $myvar
$ echo $var1
domain1
$ echo $var2
domain2
вы можете объединить эти две команды в один:
read var1 var2 var3 <<< $(mysql -D$MYDB -u$MYUSER -p$MYPASS -se "SELECT domain FROM domains")
можно хранить результаты в массивах (полезно, если вы не знаете, сколько там записей):
$ read -ra vars <<< $(mysql -D$MYDB -u$MYUSER -p$MYPASS -se "SELECT domain FROM domains")
$ for i in "${vars[@]}"; do
$ echo $i
$ done
domain1
domain2
domain3
другой способ сделать это:
dbquery=`mysql -D$MYDB -u$MYUSER -p$MYPASS -se "SELECT domain FROM domains"`
dbquery_array=( $( for i in $dbquery ; do echo $i ; done ) )
в первой строке хранятся все выходные данные запроса в переменной dbquery
в массиве-как сторону. Вторая строка преобразует dbquery
в массиве dbquery_array
простой for
петли.
Я сделал это
переменная=mysql -u root -ppassworrd database << EOF
select MAX(variable) AS a from table where variable2 = 'SOMETEXT' AND day(datevalue) >= 22;
EOF
надеюсь, это поможет