elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
29 Mayo 2012, 09:21  


Tema destacado: Recuperar cuenta de Google, GMail, Youtube

+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting (Moderadores: Novlucker, Leo Gutiérrez., EleKtro H@cker)
| | |-+  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 905 veces)
InuKen

Desconectado Desconectado

Mensajes: 4


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

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
#!/bin/bash
 
echo "Escribe la ruta donde se encuentran los archivos a mover"
read ruta_origen
 
if [ -d "$ruta_origen" ]
  then
     echo "Escribe las extensiones separadas por comas de los tipos de archivos a mover"
     read extensiones
 
     echo "Escribe la ruta donde quieres mover tus archivo..."
     read ruta_destino
 
     if [ -d "$ruta_destino" ]
        then
 
           ls "$ruta_origen"*.{"$extensiones"} > /tmp/lista_archivos.txt
 
           for linea in $(cat /tmp/lista_archivos.txt)
           do  
              mv ${ruta_origen}$linea $ruta_destino
           done
           clear
           echo "Los archivos se movieron correctamente"
        else
           echo "El directorio no existe, no se puede continuar"
     fi
 
  else
     echo "El directorio no existe, no se puede continuar"
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 por Leo Gutiérrez. » En línea
Leo Gutiérrez.
. . .. ... ..... ........ ............. .....................
Moderador
***
Desconectado Desconectado

Mensajes: 2.968


/^$/


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

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

Código
#!/bin/bash
 
read -p "Escribe la ruta de los archivos a mover : " ruta
echo -e "Ruta : $ruta"
# Salimos si la ruta no existe:
[[ -d "$ruta" ]] || {
exit 1;
}
 
read -p "Escribe las extensiones separadas por comas : " ext
 
read -p "Escribe la ruta donde quieres mover tus archivos : " destino
# Salimos si la ruta no existe:
[[ -d "$ruta" ]] || {
exit 1;
}
 
IFS=","
for i in `echo -e "${ext}" | tr -d ' '`
do
mv -vi "${ruta}"/*.${i} "${destino}"
done
 

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 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}
 

leorocko13@hotmail.com
https://github.com/leogtzr/
InuKen

Desconectado Desconectado

Mensajes: 4


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

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: 428



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

Código
#!/bin/bash
 
read -p "Escribe la ruta de los archivos a mover : " ruta
echo -e "Ruta : $ruta"
# Salimos si la ruta no existe:
[[ -d "$ruta" ]] || {
exit 1;
}
 
read -p "Escribe las extensiones separadas por comas : " ext
 
read -p "Escribe la ruta donde quieres mover tus archivos : " destino
# Salimos si la ruta no existe:
[[ -d "$ruta" ]] || { exit 1;
}
 
IFS=","
for i in `echo -e "${ext}" | tr -d ' '`
do
mv -vi "${ruta}"/*.${i} "${destino}"
done
 
Creo que querías poner:
Código
[[ -d "$destino" ]] || {	exit 1;
}
 

Saludos! :P
En línea

Leo Gutiérrez.
. . .. ... ..... ........ ............. .....................
Moderador
***
Desconectado Desconectado

Mensajes: 2.968


/^$/


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

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

Código
(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}
 

leorocko13@hotmail.com
https://github.com/leogtzr/
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Problema en Bash Script en Linux !!!
Programación General
Diabliyo 3 448 Último mensaje 18 Marzo 2005, 13:27
por Diabliyo
[Bash script] equivalente de goto en batch para bash (SOLUCIONADO)
Scripting
moikano→@ 4 2,553 Último mensaje 4 Noviembre 2010, 15:58
por moikano→@
Problema Script. [bash]
Scripting
LDueñas 7 2,182 Último mensaje 27 Mayo 2011, 09:16
por LDueñas
Problema script bash
Scripting
hervasiop12345 2 1,326 Último mensaje 29 Mayo 2011, 22:23
por hervasiop12345
Problema con script en bash
Scripting
bewa 0 162 Último mensaje 1 Febrero 2012, 21:44
por bewa
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines