Agregar variables a un comando de shell en Automator


1

Yo uso la Terminal para ejecutar un comando. Funciona bien desde la línea de comandos, pero quiero poder automatizarlo con Automator. La sintaxis del comando (por supuesto, menos las comillas) es la siguiente:

 spotify-ripper user.name "/path/to/directory" "spotifyURI" 

He intentado innumerables veces para que Automator:

  1. Pregunte por los elementos del buscador (para crear el "directorio / a / directorio")
  2. Preguntar por el texto (preguntándome que pase en el enlace URI / URL de spotify)
  3. Ejecutar shell script (/ bin / bash)

    spotify-ripper user.name "$@"
    

Lo he intentado con "Pasar entrada" a "stdin" o "como argumentos". Solo recibe un error. He leído que "$ @" pasará ambas variables una tras otra, justo lo que necesito. También probé "$ 1", "$ 2", como han sugerido algunas publicaciones. ¿Qué me estoy perdiendo? Solo quiero pasar información de ruta y una URL al final de un comando de shell, pero nada parece funcionar. He probado las opciones GET y SET Variable, pero eso tampoco parece ayudar.

¿Alguien tiene alguna idea de lo que debería estar haciendo?

Respuestas:


1

Hay múltiples formas de resolver este problema. Una forma ya está descrita en la pregunta. Variable de automatización en shell script (Asegúrate de habilitar las opciones precisamente como sigue):

  1. Pregunte por artículos del buscador (Tipo: Carpetas)
  2. Establecer valor de variable (Variable [ejemplo]: Ruta de directorio)
  3. Solicitar texto (Verificado: ignorar la entrada de esta acción; Verificado: Requerir una respuesta)
  4. Establecer valor de variable (Variable [ejemplo]: Spotify-Url)
  5. Obtener valor de la variable (Variable: Ruta del directorio; Comprobado: ignorar la entrada de esta acción)
  6. Obtener valor de la variable (Variable: Spotify-Url)
  7. Ejecutar Shell Script (Pasar entrada: como argumentos; Contenido: export PATH=/usr/local/bin:$PATH ; /path/to/spotify-ripper user.name "$1" "$2" —Cambie la parte "/ path / to" por la ruta real para spotify-ripper, por supuesto: probablemente / usr / local / bin / spotify-ripper)

Otra forma es usar AppleScript, ya sea en una acción "Ejecutar AppleScript" en Automator o como una aplicación AppleScript guardada en AppleScript Editor. Aquí hay un ejemplo en AppleScript:

on run
    try
        set spotifyDialog to display dialog "Enter a Spotify URL:" buttons {"Cancel", "OK"} default button "OK" cancel button "Cancel" default answer "https://" with title "Spotify Ripper"
        if the button returned of spotifyDialog is "OK" then
            set spotifyURL to text returned of spotifyDialog
            choose folder with prompt "Choose a folder:"
            set theDirectory to the result
            do shell script "export PATH=/usr/local/bin:$PATH ; /path/to/spotify-ripper user.name " & quoted form of POSIX path of theDirectory & space & spotifyURL
        end if
    end try
end run

eso es asombroso, pero ahora simplemente no podemos averiguar cuál es la ruta de acceso a la aplicación. Se instaló a través de Homebrew, por lo que no estoy seguro de dónde se instaló.
Mark Monahan

@MarkMonahan en la terminal, which spotify-ripper te dirá el camino a spotify-ripper si esta en tu CAMINO . Si por alguna extraña razón no está en su RUTA pero sabe que está en / usr, find /usr -name "spotify-ripper" 2>/dev/null Debería indicarte el camino también. Si mi respuesta anterior funcionó para usted, no olvide marcar la respuesta como aceptada.
Big Mac

Gracias por todo su aporte en esto. Para complicar las cosas, continúa reportando un error con el script de shell. Cuando lo ejecuto a través del método Apple Script anterior, dice que falta una dependencia requerida (Lame) y me dice que lo instale y lo agregue al PATH. Lame ya está instalado y funciona bien cuando spotify-ripper se ejecuta desde la línea de comando normal. ¿Alguna idea de por qué no puede ver las dependencias cuando se ejecuta a través de Apple Script?
Mark Monahan

@MarkMonahan AppleScript ejecuta scripts de shell utilizando sh, que no usa el Variable PATH desde bash (la shell interactiva en la Terminal). Si instalaste lame con Homebrew, luego en el cambio de AppleScript do shell script "/path/to/spotify-ripper user.name " a do shell script "export PATH=/usr/local/bin:$PATH ; /path/to/spotify-ripper user.name " (cambiando la parte "/ path / to", por supuesto). Eso dirá sh donde encontrar lame. Si eso no funciona, házmelo saber.
Big Mac

Sí, lame se instaló a través de Homebrew. Aún no puedo hacerlo funcionar a través de Apple Script (ahora tengo errores que parecen estar más vinculados a Spotify-ripper con problemas), pero ahora funciona en Automator cuando agrego la línea PATH al "Run Shell Script". ¡Llama a eso un éxito! Muchas gracias por tu paciencia y ayuda.
Mark Monahan
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.