Tengo un script de bash que funciona como un hilo. Ahora me gustaría convertirlo en un servicio con Automator.
La entrada se establece en Archivos de imagen en Automator y la acción del script de shell se establece en Pass input as arguments
.
El problema:
Automator tiene problemas con dos cosas:
- La función
- La condición if
Sin embargo, no aparece ningún error en el registro y el resultado del script de shell está vacío:
(
""
)
Lo que hace el script:
La función createDatePath
comprueba si la imagen pasada tiene el formato 2020-08-10-demo_image.jpg
y crea una carpeta YEAR/MONTH/
en el directorio de destino. La condición si realiza acciones en la entrada dependiendo de si es un JPEG o un PNG, y si la cadena de fecha va seguida de una cadena -qq-
. Esta es una versión recortada del script (tengo algunas más si las condiciones, pero supongo que no las necesitamos aquí).
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:
Enlaceparacompletarelscriptdeshell:
Si alguien pudiera explicarme por qué esto no funciona y cómo hacerlo funcionar, sería genial.
PS: En el script no Automator, lo primero que hice fue cd
en la ruta de origen, pero como esto terminará como un servicio que toma los archivos como entrada, creo que puedo omitir esto (agregar cd "$@"
no fue bueno).