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:
- La función
- 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:
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).