1 votos

Automator no ejecuta mi shell bash script

Tengo un bash script que funciona como un hilo. Ahora me gustaría convertirlo en un servicio con Automator.

La entrada se ajusta a Archivos de imagen en Automator y la acción del shell script se establece en Pass input as arguments .

El problema:

Automator tiene dos problemas:

  1. La función
  2. La condición if

Sin embargo, no aparece ningún error en el registro y el resultado del shell script está vacío:

(
  ""
)

Lo que hace el script:

El función createDatePath comprueba si la imagen pasada está formada como 2020-08-10-demo_image.jpg y crea una carpeta YEAR/MONTH/ en el directorio de destino. La página web si la condición realiza acciones sobre la entrada dependiendo de si es un JPEG o un PNG, y de si la cadena de fecha va seguida de un -qq- de la cadena. Esta es una versión recortada del script (tengo algunas de más condiciones if, pero no las necesitamos aquí supongo).

El script:

backup=/Users/me/Desktop/A/backup/
targetPath=/Users/me/Desktop/A/output/

function createDatePath {
    [[ "$i" =~ ^([0-9]{4})-([0-9]{2}) ]] && \
    mkdir -p "$targetPath${BASH_REMATCH[1]}/${BASH_REMATCH[2]}";
}
for i in "$@"; do
    cp "$i" "$backup"
    if [[ "$i" =~ ^([0-9]{4})-([0-9]{2})-([0-9]{2})-([^q]{2}).+\.((jpg)|(jpeg))$ ]]; then
        createDatePath;
    else
        exit 0;
    fi
done

Captura de pantalla:

Demo Mode

Enlace al shell completo script: https://gist.github.com/pattulus/a89be63478174853d667

Si alguien me puede explicar por qué no funciona esto y cómo hacerlo funcionar sería genial.

PD: En el script que no es de Automator, lo primero que hice fue cd en la ruta de origen, pero como esto terminará como un servicio que toma archivos como entrada, mi suposición fue que puedo omitir esto (añadiendo cd "$@" no sirvió de nada).

3voto

Fuzzy Purple Monkey Puntos 702

Los argumentos que Automator pasa al script son rutas absolutas. Puedes convertirlos en nombres base con algo como i=${i##*/} .

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X