elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Problema script bash ruta de directorio en variable
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema script bash ruta de directorio en variable  (Leído 6,174 veces)
InuKen

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Problema script bash ruta de directorio en variable
« en: 12 Mayo 2011, 05:23 am »

Que tal, buenas noches!

Estoy aprendiendo a crear scripts en bash, y estoy haciendo un script el cual te mueve todos los ficheros de las extensiones que tu le indiques de una ruta origen a una ruta destino. Este script es solo didactico, pues estoy practicando el uso de for e if.

El script es el siguiente:


Código
  1. #!/bin/bash
  2.  
  3. echo "Escribe la ruta donde se encuentran los archivos a mover"
  4. read ruta_origen
  5.  
  6. if [ -d "$ruta_origen" ]
  7.   then
  8.      echo "Escribe las extensiones separadas por comas de los tipos de archivos a mover"
  9.      read extensiones
  10.  
  11.      echo "Escribe la ruta donde quieres mover tus archivo..."
  12.      read ruta_destino
  13.  
  14.      if [ -d "$ruta_destino" ]
  15.         then
  16.  
  17.            ls "$ruta_origen"*.{"$extensiones"} > /tmp/lista_archivos.txt
  18.  
  19.            for linea in $(cat /tmp/lista_archivos.txt)
  20.            do  
  21.               mv ${ruta_origen}$linea $ruta_destino
  22.            done
  23.            clear
  24.            echo "Los archivos se movieron correctamente"
  25.         else
  26.            echo "El directorio no existe, no se puede continuar"
  27.      fi
  28.  
  29.   else
  30.      echo "El directorio no existe, no se puede continuar"
  31. fi

El script almacena en una variable la ruta_origen, en otra la ruta_destino y en una tercera las extensiones que tiene que mover. Sin embargo al llamar dos variables en la instruccion del comando ls lo hago de la siguiente manera: ls "$ruta_origen"*.{"$extensiones"}. El problema que el script al llegar a esa linea, me indica que la ruta no existe, cuando el error mostrado me muestra realmente la ruta que es, pero el interprete bash muestra que no, que no existe. Que pasa?


He buscado por internet, pero no encuentro nada...

Alguna idea?

De antemano, gracias...


« Última modificación: 13 Mayo 2011, 01:03 am por Leo Gutiérrez. » En línea

leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: Problema script bash ruta de directorio en variable
« Respuesta #1 en: 13 Mayo 2011, 01:55 am »

Bueno, el problema es la expansión de las variables, aquí te dejo un ejemplo:

Código
  1. #!/bin/bash
  2.  
  3. read -p "Escribe la ruta de los archivos a mover : " ruta
  4. echo -e "Ruta : $ruta"
  5. # Salimos si la ruta no existe:
  6. [[ -d "$ruta" ]] || {
  7. exit 1;
  8. }
  9.  
  10. read -p "Escribe las extensiones separadas por comas : " ext
  11.  
  12. read -p "Escribe la ruta donde quieres mover tus archivos : " destino
  13. # Salimos si la ruta no existe:
  14. [[ -d "$ruta" ]] || {
  15. exit 1;
  16. }
  17.  
  18. IFS=","
  19. for i in `echo -e "${ext}" | tr -d ' '`
  20. do
  21. mv -vi "${ruta}"/*.${i} "${destino}"
  22. done
  23.  

Código:
┌─[0 leo@archero ~/Desktop]$
└─> bash shell.sh
Escribe la ruta de los archivos a mover : /home/leo/Desktop
Ruta : /home/leo/Desktop
Escribe las extensiones separadas por comas : doc, txt, c, jpg
Escribe la ruta donde quieres mover tus archivos : /home/leo/
`/home/leo/Desktop/CV.doc' -> `/home/leo/CV.doc'
`/home/leo/Desktop/CV.n.doc' -> `/home/leo/CV.n.doc'
`/home/leo/Desktop/arreglos.txt' -> `/home/leo/arreglos.txt'
`/home/leo/Desktop/comandos.txt' -> `/home/leo/comandos.txt'
`/home/leo/Desktop/code.c' -> `/home/leo/code.c'
`/home/leo/Desktop/instructivo 1.jpg' -> `/home/leo/instructivo 1.jpg'
┌─[0 leo@archero ~/Desktop]$
└─>


En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
InuKen

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: Problema script bash ruta de directorio en variable
« Respuesta #2 en: 13 Mayo 2011, 06:49 am »

Gracias por tu respuesta man, al rato me pondre a verificar mi codigo y aplicare tu recomendacion. Ya contare los resultados.
En línea

xassiz~


Desconectado Desconectado

Mensajes: 457



Ver Perfil WWW
Re: Problema script bash ruta de directorio en variable
« Respuesta #3 en: 13 Mayo 2011, 14:53 pm »

Código
  1. #!/bin/bash
  2.  
  3. read -p "Escribe la ruta de los archivos a mover : " ruta
  4. echo -e "Ruta : $ruta"
  5. # Salimos si la ruta no existe:
  6. [[ -d "$ruta" ]] || {
  7. exit 1;
  8. }
  9.  
  10. read -p "Escribe las extensiones separadas por comas : " ext
  11.  
  12. read -p "Escribe la ruta donde quieres mover tus archivos : " destino
  13. # Salimos si la ruta no existe:
  14. [[ -d "$ruta" ]] || {
  15. exit 1;
  16. }
  17.  
  18. IFS=","
  19. for i in `echo -e "${ext}" | tr -d ' '`
  20. do
  21. mv -vi "${ruta}"/*.${i} "${destino}"
  22. done
  23.  
Creo que querías poner:
Código
  1. [[ -d "$destino" ]] || {
  2. exit 1;
  3. }
  4.  

Saludos! :P
En línea

leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: Problema script bash ruta de directorio en variable
« Respuesta #4 en: 14 Mayo 2011, 00:46 am »

Así es, lo hice rápido, no me fije bien.
En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Bash script] equivalente de goto en batch para bash (SOLUCIONADO)
Scripting
moikano→@ 4 15,065 Último mensaje 4 Noviembre 2010, 15:58 pm
por moikano→@
Problema Script. [bash]
Scripting
LDueñas 7 5,564 Último mensaje 27 Mayo 2011, 09:16 am
por LDueñas
Problema script bash
Scripting
hervasiop12345 2 2,847 Último mensaje 29 Mayo 2011, 22:23 pm
por hervasiop12345
Script: Personalizar ruta de directorio con fecha personalizada
Scripting
Dcg29 0 1,522 Último mensaje 19 Noviembre 2014, 11:08 am
por Dcg29
Bash script: variable array
Scripting
Echizen 2 2,584 Último mensaje 12 Junio 2016, 03:56 am
por Echizen
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines