2013-08-07 5 views
1

Я пытаюсь отправить некоторые данные в удаленную базу данных MySQL с использованием сценария BASH на GNU/Linux, но получить различные ошибки. Вот строка, которая не работает:Heredocs, переменные и одинарные кавычки в BASH и MySQL

mysql --host=192.168.0.100 --user=petercapaldi --password=mypassword mystartrekcharacterbase << EOF 
INSERT into myfourlegs values ('$PERSON','$THETIME','$THETIME','$THEDATE','$DAYOFWEEK'); 
EOF 

и это тоже (на всякий случай):

mysql --host=192.168.0.100 --user=petercapaldi --password=mypassword mystartrekcharacterbase << EOF 
INSERT into myfourlegs values (\047$PERSON\047,\047$THETIME\047,\047$THETIME\047,\047$THEDATE\047,\047$DAYOFWEEK\047); 
EOF 
+0

Вместо этого вы можете попробовать backquotes? например '\\' $ PERSON \\ '' – konsolebox

+0

@shellter Это всего лишь локальный IP-адрес. Я не думаю, что это действительно важно для него. – konsolebox

+0

Это поддельный локальный IP-адрес, я просто немного смазал персонажей :) Решив проблему сейчас, я был идиотом и пропустил идентификатор из базы данных. Одиночные кавычки печатаются так, как они должны (т. Е. Печатать переменные с кавычками вокруг них) –

ответ

1

Scrap что. Моя ошибка - пропустил первое поле в базе данных. Одиночные кавычки работают так же, как и с heredocs .. (т. Е. «$ VARIABLE» печатает «myvariable», как и $ VARIABLE prints myvariable).

+0

Вы задумывались над тем, что делать, если переменная содержит одну цитату? –

+0

У меня нет:/Ни один из них не должен, так как это в основном штатная машина с часами (работает на малине Pi - пошла немного с ними с ума). Но это вероятность того, что имя сотрудника может содержать одно. Что бы вы предложили там? –

 Смежные вопросы

  • Нет связанных вопросов^_^