Problema con Automator y script bash

0

Estoy haciendo un servicio de automatización, y la primera parte toma archivos y los RAR con un script bash

Por lo tanto, en Automator, tengo una acción Obtener elementos del buscador especificados para probar el flujo de trabajo y luego el script de bash

F=''
for i in "$@"; do 
    F="$F \"${i//\"/\\"}\""
done

/usr/local/bin/rar a ~/archive.rar $F

así que solo toma las rutas del archivo, coloca comillas alrededor de ellas y luego ejecuta el comando RAR con todos los archivos como argumentos. Cuando ejecuto esto, automator me da el error

  

No se puede abrir "/Users/user/test.txt" No existe tal archivo o directorio

     

No se puede crear ~ / archive.rar No existe tal archivo o directorio

No tengo idea de por qué está recibiendo esos errores. Cuando agrego un eco al último comando

echo /usr/local/bin/rar a ~/archive.rar $F

Los resultados son exactamente el comando que necesito. Puedo copiarlo y pegarlo en el terminal y funciona.

¿Automator ejecuta scripts de bash de forma diferente a como se ejecutaría en la terminal?

    
pregunta user3321819 12.01.2016 - 05:35

2 respuestas

1

bash hace la expansión de $@ diferente a todas las demás variables de entorno para preservar el espacio en blanco, etc. en los argumentos. Desde bash(1) :

@ Expands  to  the  positional  parameters,  starting from one.  When the expansion occurs
  within double quotes, each parameter expands to a  separate  word.   That  is,  "$@"  is
  equivalent  to  "$1"  "$2" ...  If the double-quoted expansion occurs within a word, the
  expansion of the first parameter is joined with the beginning part of the original word,
  and  the  expansion  of  the last parameter is joined with the last part of the original
  word.  When there are no positional parameters, "$@" and $@  expand  to  nothing  (i.e.,
  they are removed).

Por lo tanto, básicamente debería poder llamar a rar dentro de la acción del script de Shell sin ningún análisis:

/usr/local/bin/rar a ~/archive.rar "$@"
    
respondido por el nohillside 13.01.2016 - 19:16
-1

Citas automáticas extrañas yendo detrás de escena que no pude entender. Así que acabo de hacer esta solución para que haga lo que quería, aunque no es exactamente una solución:

echo /usr/local/bin/rar a ~/archive.rar $F | bash
    
respondido por el user3321819 12.01.2016 - 18:26

Lea otras preguntas en las etiquetas