我编写了一个小型 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
?
答案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##*.}"