¿Reemplazo de expansión de refuerzo?

imagenes

Hice un pequeño script de bash para dividir automáticamente mis dos monitores con imagemagick cuando tomo una captura de pantalla.

#! / bin / bash
convertir "$ 1" -cultivo 1024x600+0+0 +reparar "$ {1 //. Png /} - left.png"
convertir "$ 1" -cultivo 1280x1024+1024+0 +reparar "$ {1 //. Png /} - right.png"

Esto funciona muy bien, pero solo le cambiará el nombre correctamente si es un png (que en este caso no es un problema). ¿Hay alguna forma de hacerlo funcionar para que mueva la extensión del archivo al final? Así que si llamé a este script (llamémoslo splitimage) en un archivo oldscreenshot.jpg me daría oldscreenshot-left.jpg y oldscreenshot-right.jpg?


Tenemos varias respuestas

La mejor respuesta:

Sí, usando el $ {param ## word} y $ {param% word} expansiones. El primero se librará de la extensión, el último se librará de todo pero la extensión

#! / bin / bash

convertir "$ 1" -cultivo 1024x600+0+0 +reparar "$ {1%. *} - izquierda. $ {1 ## *.}"
convertir "$ 1" -cultivo 1280x1024+1024+0 +reparar "$ {1%. *} - a la derecha. $ {1 ## *.}"

Ejemplo

$ var=foo.jpg; eco "Sin extensión: $ {var%. *} | Sólo extensión: $ {var ## *.}"
No extensión: foo | Extensión solamente: jpg

Otra respuesta

Sí. Pero usa pelar en tu expansión de parámetros (no expansión de refuerzo, eso es algo completamente diferente) en lugar de reemplazo.

convertir "$ 1" -cultivo 1024x600+0+0 +reparar "$ {1%. *} - izquierda. $ {1 ## *.}"

Fuente

Leave a Reply