Замена расширения скобки?

1

Я сделал небольшой скрипт bash для автоматического разделения двух моих мониторов с помощью imagemagick, когда я делаю скриншот.

#! /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?

Rob
источник

Ответы:

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
SiegeX
источник
image-1.5-final.png
Ignacio Vazquez-Abrams
1

Да. Но используйте раздевание в вашем расширение параметра ( не расширение скобки, это что-то совершенно другое) вместо замены.

convert "$1" -crop 1024x600+0+0 +repage "${1%.*}-left.${1##*.}"
Ignacio Vazquez-Abrams
источник
Расширение параметра. Я не мог вспомнить, как он назывался, и поэтому не мог его найти.
Rob