Ошибка при обновлении текстовой записи MySQL

#bash

#bash

Вопрос:

Я создал скрипт Bash, который обновляет некоторые записи DNS для меня (я новичок в Bash, поэтому, пожалуйста, наберитесь терпения).

Моя новая запись выглядит так:

 NEW_TXT_CONTENT="v=spf1 a mx ip4:${NEW_IP} ~all"
  

Но правильные TXT-записи DNS должны заключаться в кавычки. Поэтому я изменил свою новую запись на:

 NEW_TXT_CONTENT=""v=spf1 a mx ip4:${NEW_IP} ~all""
  

Часть MySQL выглядит следующим образом:

 mysql -u root -pPassword dnszones -e "UPDATE records SET content="${NEW_TXT_CONTENT}" WHERE id="${TXT_ID}""
  

Я получаю следующий код ошибки:

 ERROR 1064 (42000) at line 1: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'v=spf1 a mx ip4:10.10.10.10 ~all"" WHERE id="27591"' at line 1
  

Похоже, что база данных получает неправильные кавычки.

Есть ли другой способ избежать кавычек?

Обновить

Я узнал, если я напишу свою переменную следующим образом

 NEW_TXT_CONTENT="'v=spf1 a mx ip4:${NEW_IP} ~all'"
  

это работает с записью в базу данных. Но я не хочу использовать одинарные кавычки.
Если я сделаю наоборот, переменная ${NEW_IP} не будет интерпретироваться. Есть ли простое решение?

Комментарии:

1. Сколько кавычек вы хотите? Запустите следующее в терминале и внимательно посмотрите на результат: x=""x"" ; echo ""$x""

2. Похоже, вы добавляете двойные кавычки дважды в NEW_TXT_CONTENT=""v=spf1 a mx ip4:${NEW_IP} ~all"" и content="${NEW_TXT_CONTENT}" . Удалите один…

3. Хорошо. На самом деле не работает. Если я удалю (где угодно) пару двойных кавычек, она вообще не записывает ее в базу данных с кавычками : v=spf1 a mx ip4:185.134.164.51 ~all . Он должен записать это так: "v=spf1 a mx ip4:185.134.164.51 ~all"

4. @MattBackslash Подождите, вы хотите записать кавычки в базу данных? Тогда вы не сможете использовать тот же тип qoutes для цитирования строки. Как MySQL узнает, какие из них какие? Это не столько вопрос Bash, сколько вопрос о том, как заключать строку в кавычки в синтаксисе MySQL.