Estoy creando un flujo de trabajo de Automator que usa la acción del script de shell para procesar una selección de imágenes con el comando compuesto imagemagick. Solo que tengo problemas para que funcione. De acuerdo con los resultados que obtengo cuando ejecuto el flujo de trabajo, todo funciona, sin embargo, sé que no se debe al hecho de que los cambios que esperaría ver en la carpeta de imágenes no están presentes. Sé que el comando imagemagick que estoy usando es correcto ya que funciona correctamente desde la consola. (Hice eco del comando compuesto en la salida y lo copié en una sesión de Terminal. Funcionó a la perfección). Por cierto: el flujo de trabajo es para procesar un fundido de entrada en una película stop motion que hice. Sí, sé que podría usar herramientas de video para lograr lo mismo, pero a las que tengo acceso arruinan la calidad de la imagen en la salida.
aquí está el guión
imagesCount=$#
rate=$(echo "scale=2; 100/$imagesCount"|bc)
percentage=$rate
for f in "$@"; do
fileName=${f%.*}
composite -blend "$percentage" -size 1280x720 "$f" xc:black -alpha Set "$fileName-1.jpg"
percentage=$(echo "scale=2; $percentage+$rate"|bc)
done
Al principio pensé que la causa del problema podrían ser los espacios en las rutas, pero eliminé esta posibilidad cambiando los archivos a una ruta sin espacios, pero eso no tuvo ningún efecto.
Estoy casi seguro de que el problema está relacionado con algo en el comando bash, pero no sé bash en absoluto, esta es la primera vez que escribo scripts de comandos bash, pero estoy muy bien informado sobre las secuencias de comandos de la consola de Windows y no tendría ningún problema. hacer que esto funcione allí.
Si el error en la secuencia de comandos no es lo suficientemente obvio como para detectarlo, ¿alguien propondría un método para depurar esto para que pueda averiguar por qué las imágenes no se procesan a pesar de que la secuencia de comandos se ejecuta sin errores?
Simplemente haría todo en la línea de comando como un script de shell en lugar de usar Automator para iniciarlo. Póngalo #!/bin/bash
como la primera línea y ejecútelo como
myscript.sh image*.png
¿ Dónde image*.png
está su conjunto de archivos de imagen que aparentemente está seleccionando en Automator?
Si necesita ejecutarlo en todos los archivos de una carpeta, también puede hacerlo.
También puede probar su secuencia de comandos en Automator usando echo ${f%.*}
en lugar de los comandos en sí.
Reemplazar for $f
con for f
. for $f in aa; do :; done
da como resultado un error como `$f': not a valid identifier
.
Además, si composite
no está en la ruta, especifique la ruta completa (como /usr/local/bin/composite
).
Percival Ulises
composite
con su ruta absoluta (se puede determinar ejecutandowhich composite
en la Terminal)?kaydell
greg
greg
beroe
$f
af
o fue solo un error de transcripción? También su uso de mayúsculasfileName
es inconsistente.greg
greg