Consulta con Bash

Temas sobre programación ( php, c, sql, html, perl, python, ruby, java, bash, etc ) y recursos ( herramientas, frameworks, hosting, cms, etc )

Moderadores: maiku, akodo

Responder
linuxzit
Forista Nuevo
Forista Nuevo
Mensajes: 2
Registrado: Lun Abr 21, 2014 4:26 pm

Consulta con Bash

Mensaje por linuxzit »

Hola Amigos,

Les saludo, esperando y agradeciendo por cualquier ayuda que me puedan otorgar, mi consulta es con respecto con un bash el cual necesito realizar, les comento el proceso que deseo realizar :

1.- Subiré un archivo .txt a mi maquina linux, este archivo lo convierto desde formato de texto windows a formato linux.

2.- En este archivo .txt tiene datos con los números 1, 2 y 3, lo cual reemplazare por Malo, Regular y Bueno.

3.- Este mismo archivo reemplazo los valores ; por / . (La idea es ordenar Los datos)

4.- Una vez parseados u ordenados los datos los muevo a una carpeta de respaldo la cual lleva el nombre del año y una subcarpeta del mes en que se realiza el respaldo.

5.- Una vez movido el archivo, procedo a cambiar de formato el archivo desde Linux a Windows.

6.- Una vez convertido procedo a convertirlo en .zip.

El problema es que no me resulta, si bien crea las carpetas y ejecuta el archivo, no dejar el archivo de respaldo ni en formato .zip o txt.

Les dejo el bash para que puedan mirarlo y si pueden me indican en que cometi errores o mucho mejor si me indican como puedo realizarlo de mejor forma.


Muchas gracias

Código: Seleccionar todo

#!/bin/bash

Folder="/prueba"

Year=$(date +%Y)
Month=$(date +%m)

FileClient=$1
NameFile=$2

if [ "$FileClient" = "" ];

then

echo "No ha ingresado el nombre del archivo"

exit
else
if test ! -e "$FileClient";

then

echo "No existe el fichero indicado"

exit

fi

fi

cd $Folder

if test ! -d "$Folder/$Year";

then
mkdir $Year
fi

if test ! -d "$Folder/$Year/$Month";

then
mkdir $Year/$Month
fi

if [ "$NameFile" = "" ];

then

echo "No ha ingresado el nombre del archivo"

exit

fi
echo "Convirtiendo $FileClient de dos a unix....."

dos2unix $FileClient

echo "Parseando informacion de $FileClient para adaptación"
awk '{gsub(/,/,";");print}' $FileClient > $FileClient.tmp1
awk '{gsub(/;1;/,";Malo;");gsub(/;2;/,";Regular;");gsub(/;3;/,";Bueno;");print}' $FileClient.tmp1 > $FileClient.tmp2

echo "Creando archivo .ZIP......"

mv $FileClient.tmp1 $Folder/$Year/$Month/$NameFile-ejec.txt

unix2dos $Folder/$Year/$Month/$FileClient-ejec.txt

zip $Folder/$Year/$Month/$NameFile-ejec.zip $Folder/$Year/$Month/$NameFile-ejec.txt

  echo "ZIP $NameFile-eject.zip almacenado en $Folder/$Year/$Month"

fi

exit
Última edición por akodo el Mié Abr 23, 2014 1:17 am, editado 1 vez en total.
Razón: Utiliza las etiquetas "code" para poner el código. Gracias

Avatar de Usuario
akodo
Moderador
Moderador
Mensajes: 1457
Registrado: Mié Nov 28, 2007 8:00 am
Ubicación: En la X del explorer (pulse para llamar)

Re: Consulta con Bash

Mensaje por akodo »

¿Puedes poner el error que te sale? Creo que puede ser por un problema de espacios, pero sin saber el error es complicado.

A parte de eso, un par de cosas:
· indenta el código, porque sino cuesta mucho leerlo
· hacer "cd" en un script, personalmente lo considero de mal gusto porque no me gusta que me cambien el directorio de trabajo, así que evítalo si es posible (que seguro que lo es)
· se repite mucho el "$Year/$Month/$NameFile", es mejor meterlo todo en una variable y usarla, y así queda más entendible
Descargue el gestor de mp3 "Music Manager" -> ([url=http://ctrlalt.iespana.es]mmlf[/url])
Última versión del gestor "Music Manager" -> ([url=http://sourceforge.net/projects/jmusicmanager/]jmmm[/url])

Responder
  • Temas similares
    Respuestas
    Vistas
    Último mensaje