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

mysql -e option с переменными данными - передать значение переменной для вставки оператора sql в сценарий оболочки

Следующий сценарий оболочки не вставляет данные в таблицу. Как передать значение переменной для вставки оператора sql в сценарий оболочки.

id=0
while true
do
id=`expr $id + 1`;
mysql -u root -ptest --socket=/data/mysql1/mysql.sock -e 'insert into mytest1.mytable2(id,name) values (' $id ',"testing");'
echo $id  >> id.txt
done

Я изменил сценарий, как показано ниже, и попробовал, но проблема все еще не устранена.

id=0
while true
do
id=`expr $id + 1`;
# mysql -u root -ptest --socket=/data/mysql1/mysql.sock1 -e 'insert into mytest1.mytable1(name) values ("amma");'
mysql -u root -ptest --socket=/data/mysql1/mysql.sock -e 'insert into mytest1.mytable2(id,name) values ( $id ,"testing");'
echo $id  >> id.txt
done

ошибка :

]$ ./insert 
ERROR 1054 (42S22) at line 1: Unknown column '$id' in 'field list'

Это должно работать:

id=0
while true
do
    id=`expr $id + 1`;
    mysql -u root -ptest --socket=/data/mysql1/mysql.sock -e "insert into mytest1.mytable2(id,name) values ($id, \"testing\");"
    echo $id  >> id.txt
done

Переменные в двойных кавычках интерполируются, а переменные, заключенные в одинарные кавычки, - нет.