Título: Duda con Script Shell | eliminar espacios en blanco Publicado por: khrizs3422 en 30 Junio 2017, 16:01 pm Señores, intrusiando y aprendiendo a hacer script quice hacerme mas facil descargar Musica desde youtube y me hice este Script:
es totalmente funcional para lo que yo quería, pero me surgió una duda y estoy quieriendo resolverla pero no he podido. read -p 'TITULO MP3 ( baile-del-peluche.mp3): ' nombre esta linea permite poner un nombre al tema descargado, con el que se guardará en la carpeta destino. youtube-dl -x --audio-format mp3 $fuente -o $nombre esta linea es lo que sale para que comience a correr el script y a descargar el tema importado desde el url de youtube. sin embargo para que funcione correctamente el $nombre no debe tener espacios es decir el codigo para ser corrible debe ser así: BIEN youtube-dl -x --audio-format mp3 http://youtube.com/link -o nombre_del_tema.mp3 MAL youtube-dl -x --audio-format mp3 http://youtube.com/link -o nombre del tema.mp3 pero ahora no se como hacerlo si en la linea read -p 'TITULO MP3 ( baile-del-peluche.mp3): ' nombre escribo con espacios por ejemplo nombre del tema.mp3 el script no corre y esa es mi duda. como hago que $nombre no tenga espacios aunque al escribir en el terminal lo haga con espacios. les dejo parte del codigo para que lo revicen y puedan ayudarme. saludos Código
Saludos Título: Re: Duda con Script Shell | eliminar espacios en blanco Publicado por: khrizs3422 en 2 Julio 2017, 04:39 am al final lo solucioné solo por si alguien tuviera ese mismo dilema.
Solo usé un poco de lógica. areglé que todos los temas descargados se guarden como youtube.mp3 al final agregue una linea que busque el fichero youtube.mp3 y lo reemplaze por lo escrito en $nombre. El código quedó de la siguiente forma : Código: function Descarga { Título: Re: Duda con Script Shell | eliminar espacios en blanco Publicado por: Eleкtro en 2 Julio 2017, 10:51 am para que funcione correctamente el $nombre no debe tener espacios es decir el codigo para ser corrible debe ser así: BIEN youtube-dl -x --audio-format mp3 http://youtube.com/link -o nombre_del_tema.mp3 MAL youtube-dl -x --audio-format mp3 http://youtube.com/link -o nombre del tema.mp3 En realidad esos ejemplos de sintaxis no son "BIEN" y "MAL", sino "MAL" y "FATAL". Una de las cosas más básicas que se debe aprender en la programación, sobre todo al desarrollar y/o trabajar con aplicaciones command-line (o en el scripting en general), es que el caracter delimitador de argumentos es el espacio en blanco (" "), por ende, si escribes argumentos (en este caso, un nombre de archivo) con espacios en blanco, cada palabra será interpretado como parámetros adicionales... (lo que puede provocar un error de sintaxis) y para evitar eso los argumentos con espacios en blanco deben ser encerrados utilizando el símbolo de apertura y cierre de argumento, usualmente las comillas dobles. De hecho, todos los argumentos que le envies a una aplicación command-line deberías encerrarlos, contengan espacios en blanco o no, para seguir buenos hábitos de programación y prevenir un fallo humano. BIEN: Código: "youtube-dl.exe" -x --audio-format "mp3" "http://youtube.com/link" -o "nombre de archivo con o sin espacios.mp3" como hago que $nombre no tenga espacios aunque al escribir en el terminal lo haga con espacios. Por las razones que he explicado arriba, tu pregunta está mal enfocada, ya que lo que realmente deberías hacer no es intentar evitar escribir espacios, sino justamente lo contrario... Hace muchos años que no uso Bash/Linux, no recuerdo como se hace esto, pero yo supongo que si le añades unas comillas simples se conseguirá el efecto deseado, y la variable se expandirá, así que prueba a ver si así te funciona así: Código: youtube-dl -x --audio-format mp3 $fuente -o '$nombre' Código: youtube-dl -x --audio-format mp3 $fuente -o "$nombre" Saludos. Título: Re: Duda con Script Shell | eliminar espacios en blanco Publicado por: khrizs3422 en 5 Julio 2017, 02:07 am En realidad esos ejemplos de sintaxis no son "BIEN" y "MAL", sino "MAL" y "FATAL". Agradezco la aclaración y la respuesta, por desgracia youtube-dl no permite la incorporacion de " " fue lo primero que intenté ( poner la linea como la planteas) Una de las cosas más básicas que se debe aprender en la programación, sobre todo al desarrollar y/o trabajar con aplicaciones command-line (o en el scripting en general), es que el caracter delimitador de argumentos es el espacio en blanco (" "), por ende, si escribes argumentos (en este caso, un nombre de archivo) con espacios en blanco, cada palabra será interpretado como parámetros adicionales... (lo que puede provocar un error de sintaxis) y para evitar eso los argumentos con espacios en blanco deben ser encerrados utilizando el símbolo de apertura y cierre de argumento, usualmente las comillas dobles. De hecho, todos los argumentos que le envies a una aplicación command-line deberías encerrarlos, contengan espacios en blanco o no, para seguir buenos hábitos de programación y prevenir un fallo humano. BIEN: Código: "youtube-dl.exe" -x --audio-format "mp3" "http://youtube.com/link" -o "nombre de archivo con o sin espacios.mp3" Por las razones que he explicado arriba, tu pregunta está mal enfocada, ya que lo que realmente deberías hacer no es intentar evitar escribir espacios, sino justamente lo contrario... Hace muchos años que no uso Bash/Linux, no recuerdo como se hace esto, pero yo supongo que si le añades unas comillas simples se conseguirá el efecto deseado, y la variable se expandirá, así que prueba a ver si así te funciona así: Código: youtube-dl -x --audio-format mp3 $fuente -o '$nombre' Código: youtube-dl -x --audio-format mp3 $fuente -o "$nombre" Saludos. Por otra parte de aber encontrado la respuesta en Google no abría preguntado en un foro, de ser por eso cerremos los foros y no preguntemos nada ya que siempre te dicen que busques en google . Al final de todo tuve que proporcionar otra solución. te dejo el codigo final que use para que lo revisen y hechen mano si a alguien le sirve Código: echo -e "\e[35m NOTA 1 : NO PONER VIDEOS DIRECTO DE UNA LISTA DE REPRODUCCIÓN \e[0m" Título: Re: Duda con Script Shell | eliminar espacios en blanco Publicado por: khrizs3422 en 5 Julio 2017, 02:13 am PD este codigo fue el que dejé final y funciona a la perfección para descargar MP3 desde youtube y otras web de videos
|