Imagemagick에서 쉘 변수를 이스케이프하는 데 문제가 있습니다.

Imagemagick에서 쉘 변수를 이스케이프하는 데 문제가 있습니다.

문자열로 전달하는 연결된 쉘 변수를 처리하는 데 $quote$arcangle문제가 있는 imagemagick 명령이 있습니다. $halfdimension$quote성적표는 다음과 같습니다.

$> echo convert grad.png -alpha set -virtual-pixel Transparent -rotate 180 -distort Arc $quote$arcangle -90 $halfdimension$quote +repage -gravity center -crop $dimension"x"$dimension"+0+0" +repage h.png
   convert grad.png -alpha set -virtual-pixel Transparent -rotate 180 -distort Arc '360 -90 450' +repage -gravity center -crop 900x900+0+0 +repage h.png

$> convert grad.png -alpha set -virtual-pixel Transparent -rotate 180 -distort Arc $quote$arcangle -90 $halfdimension$quote +repage -gravity center -crop $dimension"x"$dimension"+0+0" +repage h.png
convert: unable to open image `-90': No such file or directory @ error/blob.c/OpenBlob/2709.
convert: no decode delegate for this image format `' @ error/constitute.c/ReadImage/501.
convert: unable to open image `450'': No such file or directory @ error/blob.c/OpenBlob/2709.
convert: no decode delegate for this image format `' @ error/constitute.c/ReadImage/501.

그러나 echo 명령의 출력을 붙여넣었습니다.

$> convert grad.png -alpha set -virtual-pixel Transparent -rotate 180 -distort Arc '360 -90 450' +repage -gravity center -crop 900x900+0+0 +repage h.png
(h.png is created without problems.)

첫 번째 인스턴스에서 올바르게 구문 분석되지 않는 이유는 무엇입니까?

답변1

아마도 다음과 같이 파일에 쓰면 작동할 것입니다 foo.sh.

#!/bin/bash
arcangle=270
dimension=768
fin=grad.png
fout=h.png
convert $fin -alpha set -virtual-pixel Transparent -rotate 180 -distort Arc "$arcangle -90" +repage -gravity center -crop "${dimension}x${dimension}+0+0" +repage $fout

그리고./foo.sh

당신은 또한 볼 수 있습니다여기

관련 정보