교정장치 확장 대체?

교정장치 확장 대체?

스크린샷을 찍을 때 imagemagick을 사용하여 두 개의 모니터를 자동으로 분할하는 작은 bash 스크립트를 만들었습니다.

#! /bin/bash
convert "$1" -crop 1024x600+0+0 +repage "${1//.png/}-left.png"
convert "$1" -crop 1280x1024+1024+0 +repage "${1//.png/}-right.png"

이것은 훌륭하게 작동하지만 png인 경우에만 이름을 올바르게 바꿀 수 있습니다(이 경우에는 문제가 되지 않습니다). 어쨌든 파일 확장자를 끝으로 옮기도록 작동하게 만드는 방법이 있습니까? 따라서 파일에서 이 스크립트(splitimage라고 부르자)를 호출하면 oldscreenshot.jpg나에게 oldscreenshot-left.jpg그리고 oldscreenshot-right.jpg?

답변1

예, ${param##word}${param%word}확장을 사용합니다. 첫 번째는 확장을 제거하고 마지막은 모든 것을 제거합니다.하지만확장

#! /bin/bash

convert "$1" -crop 1024x600+0+0 +repage "${1%.*}-left.${1##*.}"
convert "$1" -crop 1280x1024+1024+0 +repage "${1%.*}-right.${1##*.}"

$ var=foo.jpg; echo "No extention: ${var%.*} | Extention only: ${var##*.}"
No extention: foo | Extention only: jpg

답변2

예. 그러나 스트리핑을 사용하십시오.매개변수 확장(~ 아니다중괄호 확장, 그것은 완전히 다른 것입니다) 교체 대신.

convert "$1" -crop 1024x600+0+0 +repage "${1%.*}-left.${1##*.}"

관련 정보