Automator no ejecutará mi script bash shell

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

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

  • ¿Está enviando text a una window de Terminal o iTerm2?
  • ¿Cómo crear un service (que se muestra en el menu contextual de la URL) en Safari?
  • ¿Cómo puedo hacer que Text to Speech use diferentes voces para diferentes idiomas?
  • Enviar pulsaciones de teclas a una window cuando pierde foco
  • Open Storage Management programáticamente
  • Spotlight para la conversión de divisas
  • El problema:

    Automator tiene problemas con dos cosas:

    1. La function
    2. La condición if

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

     ( "" ) 

    Lo que hace el script:

    La function createDatePath comtesting si la image pasada tiene el formatting 2020-08-10-demo_image.jpg y crea una carpeta YEAR/MONTH/ en el directory de destino. La condición if realiza acciones en la input dependiendo de si es un JPEG o un PNG, y si la cadena de date es seguida por una cadena -qq- . Esta es una versión recortada del guión (tengo algunas más condiciones si, pero no las necesitamos aquí, supongo).

    La secuencia de commands:

     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:

    Modo de demostración

    Enlace para completar el script de shell: https://gist.github.com/pattulus/a89be63478174853d667

    Si alguien pudiera explicarme por qué esto no funciona 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 fuente, pero como esto terminará como un service que toma files como input, creo que puedo omitir esto (agregando cd "$@" no hizo ningún bien).

  • macOS ya no reconoce environment.plist
  • ¿Cómo puedo solucionar este error de CODESIGNING?
  • Cómo "killall" código de Visual Studio en la Terminal?
  • Aplicación Mac Terminal: no se puede usar la flecha hacia arriba para cargar commands anteriores cuando se usa SSH en el server remoto (^ [[A)
  • Bash Script que iniciará el segundo process de Terminal?
  • ¿Por qué mi ruta no se guarda incluso después de editar ~ / .bashrc?
  • One Solution collect form web for “Automator no ejecutará mi script bash shell”

    Los arguments que Automator pasa al script son routes absolutas. Puede convertirlos a basenames con algo como i=${i##*/} .

    Loving Apple Products like poisoning (iPhone, iPad, iMac, Macbook, iWatch).