支架擴張替代?

支架擴張替代?

我製作了一個小型 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.jpgoldscreenshot-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##*.}"

相關內容