การทดแทนการขยายตัวรั้ง?


1

ฉันได้สร้างสคริปต์ทุบตีเล็ก ๆ เพื่อแยกจอภาพสองจอของฉันออกโดยอัตโนมัติด้วย 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 (ซึ่งในกรณีนี้ไม่ใช่ปัญหา) อย่างไรก็ตามมีเพื่อให้ทำงานได้ดังนั้นมันจะย้ายนามสกุลไฟล์ไปยังจุดสิ้นสุดหรือไม่ ดังนั้นถ้าฉันเรียกสคริปต์นี้ (เรียกว่าแยกกัน) ในไฟล์ 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

image-1.5-final.png
Ignacio Vazquez-Abrams

1

ใช่. แต่ใช้การปอกของคุณ การขยายพารามิเตอร์ ( ไม่ รั้งการขยายตัวมันเป็นสิ่งที่แตกต่างอย่างสิ้นเชิง) แทนที่จะแทนที่

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

การขยายพารามิเตอร์ ฉันจำสิ่งที่มันถูกเรียกไม่ได้
Rob
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.