Das Update-Kommando nimmt meines Wissens kein „VALUES“-Statement, das INSERT vorbehalten ist, sondern nur SET an:
Bsp: UPDATE `User` SET `username`='xyz' WHERE 1
Oder bei mehreren Einträgen - mit sinnentfremdeten Werten:
Bsp: UPDATE `User` SET `id`='1',`username`='2',`email`='3',`password`='4',`comment`='5',`salt`='6' WHERE 1
Values und Insert - die Zahl der Parameter muss da übereinstimmen:
INSERT INTO `User`(`id`, `username`, `email`, `password`, `comment`, `salt`) VALUES ('test','test','test','test','test','test');
Erfolg könnte daher eher - 1. Schritt mit statischem Wert -:
mysql -h ${mysql_host} -P ${mysql_port} -u ${mysql_user} -p${mysql_password} ${mysql_database} -e "UPDATE ${table_prefix}tblOptions
SET `optionMailReplyTo`='blabla'
versprechen.
Anstatt erst den Mysql-Interpreter die Variable auflösen zu lassen, kannst Du etwa für die Verwendung in Bash oder auch PHP einen Kommandostring festlegen, den die Shell bereits dereferenziert an Mysql übergibt.
Hier ein Beispiel mit PHP:
$mysqlcmd='UPDATE `User` SET `username`=\''.$xyz.'\' WHERE 1';
Da ich hier einfache Anführungszeichen genommen habe, habe ich auch gleich die Escape-Character '\' eingebaut.
Die Variable mit dem SQL-Kommando übergibst Du an den eigentlichen Befehl: mysql -h ... -P ... -u ... -p ... -e "$mysqlcmd"
Für die Bash - siehe u.a.a. https://www.shellhacks.com/mys…cript-linux-command-line/ - müsste das Folgende genügen:
mysqlcmd="UPDATE ${table_prefix}tblOptions SET `optionMailReplyTo`=\"$myvalue\""; mysql -h ${mysql_host} -P ${mysql_port} -u ${mysql_user} -p${mysql_password} ${mysql_database} -e "$mysqlcmd"
Irrtümer vorbehalten Du musst das freilich noch anpassen, aber ich denke, die Fährte ist die richtige. Hilft Dir das weiter?