Ersatz für Zahnspangenerweiterung?

Ersatz für Zahnspangenerweiterung?

Ich habe ein kleines Bash-Skript erstellt, um meine beiden Monitore automatisch mit Imagemagick zu teilen, wenn ich einen Screenshot mache.

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

Das funktioniert prima, wird aber nur dann richtig umbenannt, wenn es sich um eine PNG-Datei handelt (was in diesem Fall kein Problem ist). Gibt es eine Möglichkeit, die Dateierweiterung ans Ende zu verschieben? Wenn ich also dieses Skript (nennen wir es „Splitimage“) für eine Datei aufrufen würde, oldscreenshot.jpgwürde es mir oldscreenshot-left.jpgund geben oldscreenshot-right.jpg?

Antwort1

Ja, mit den Erweiterungen ${param##word}und ${param%word}. Die erste entfernt die Erweiterung, die letzte allesAberdie Erweiterung

#! /bin/bash

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

Beispiel

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

Antwort2

Ja. Aber verwenden Sie Stripping in IhremParametererweiterung(nichtZahnspangenerweiterung, das ist etwas völlig anderes) statt Zahnspangenersatz.

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

verwandte Informationen