使用撇号转义imagemagick文本输入

时间:2016-08-22 10:13:25

标签: imagemagick imagemagick-convert

我正在将display-dhammapada的文本输出绘制到现有图像中。以下CLI命令有效:

convert test.jpg 
    -pointsize 30 
    -draw "gravity northwest 
           fill black 
           text 120,200 '$( display-dhammapada)'" 
    result.png

...除非我收到有收缩的报价。然后文本输入过早结束,出现错误,例如:

convert: non-conforming drawing primitive definition `s' @ error/draw.c/DrawImage/3182

这是一个撇号的案例。

如果我将引号从" ' ' "反转为' " " ',那么我最终会在图片上显示文字$( display-dhammapada)

在这种情况下,清理输入的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

您可以通过sed这样清理您的报价:

convert -size 1000x1000 xc:red -pointsize 30 -draw "gravity northwest fill black text 120,200 '$(./display-dhammapada|sed "s/'/\\\'/g")'" result.png

显示法句

#!/bin/bash
printf "There's one there!"

enter image description here

供参考:

编写可以维护和修改的通用杀菌程序脚本可能是一个想法。您可以考虑不允许它传递@作为第一个字符,它会使ImageMagick读取文件并允许攻击,您可能不希望允许其他各种事情通过 - 例如尾随换行符或分号。