Из-за нестандартных аргументов оболочки Exiv2 нелегко найти простое и надежное решение для правильной обработки предоставленных пользователем кавычек. Существует другое решение, которое, вероятно, будет гораздо более надежным и простым в обслуживании с небольшим снижением производительности.
Запишите инструкции Exiv2 в файл cmds.txt
, затем вызовите:
exiv2 -m cmds.txt IMG.jpg
чтобы прочитать инструкцию из файла.
Обновление: я реализовал этот метод, и он не требует экранирования предоставленных пользователем данных. Эти данные записываются непосредственно в текстовый файл, который читается в Exiv2. Формат командного файла Exiv2 очень прост и завершен символом новой строки, не допускает экранирования внутри значений, поэтому все, что мне нужно сделать, - это предотвратить прохождение новых строк, чего я все равно не разрешал.