Ver Mensaje Individual
  #1 (permalink)  
Antiguo 09/12/2010, 05:11
lomasdelicioso
 
Fecha de Ingreso: diciembre-2010
Mensajes: 52
Antigüedad: 13 años, 5 meses
Puntos: 5
¡¡¡Noooo!!!¡¡¡No encuentro el error en el código de este SCRIPT!!!

Hola, pues eso que no sé donde está el error de este código, si alguien me pudiera ayudar estaría bien.
Código:
#! /bin/bash
# Ejercicio que empaqueta una serie de archivos o directorios y los comprime,
# también los introduce en la carpeta CopiasSeguridad

si_existe(){                                                                             #Función que dice si un argumento existe
	local f="$1"
	[[ -a "$f" ]] && return 0 || return 1
}


if [ "$#" = "1" ]; then										#Si el número de argumentos es uno pues...
	if ( si_existe "$1" ) ; then                            #comprobamos que existeel argumento
		tar -cvf copia.tar "$1"								#empaquetamos
		gzip copia.tar										#comprimimos
		if ( si_existe "CopiasSeguridad") then			#Vemos si ya existe la carpeta destino
			mv copia.tar.gz CopiasSeguridad					#Como existe lo movemos directamente
		else												# Si no creamos CopiasSeguridad y lo metemos dentro
			mkdir CopiasSeguridad
			mv copia.tar.gz CopiasSeguridad
		fi
	else 
		printf "El directorio no existe\nForzaré la salida del script, a mí nadie me vacila\n" #Si no existe el directorio o archivo fozamos la salida del script
		exit
	fi
else
	if [ "$#" = "0" ]; then
		printf "Numero de argumentos incorrecto, que quieres que haga con 0 argumentos\n"		#Si no introducimos argumentos forzamos la salida
		exit
	else																						#Si el nº de argumentos es mayor que 1 hacemos esto:
		> copia.tar																				#Creamos un copia.tar vacío
		if ( si_existe "$1" ) then																#Vemos si existe el primer argumento
			tar -cvfcopia.tar "$1"																#Empaquetamos el primer argumento
		else
			printf "El archivo o directorio $1 no existe, no lo añadiré a CopiasSeguridad, lo siento\n"   #Si no existe forzamos la salida
		fi	
		for (( CONTADOR=2; CONTADOR<="$#"; CONTADOR++ )) ; do									#Este bucle me va empaquetando uno a uno cada uno de los argumentos
			if ( si_existe "$CONTADOR" ) then													
				tar -rvfcopia.tar "$CONTADOR"													#Creo que el error está aquí
			else
				printf "El archivo o directorio $CONTADOR no existe, no lo añadiré a CopiasSeguridad, lo siento\n"
			fi
		done
		gzip copia.tar																			#Comprimimos
		if ( si_existe "CopiasSeguridad") then													
			mv copia.tar.gz CopiasSeguridad														#Movemos nuestro archivo compreso a CopiasSeguridad
		else	
			mkdir CopiasSeguridad																#Creamos la carpeta y luego la movemos
			mv copia.tar.gz CopiasSeguridad
		fi
	fi
fi
Gracias por vuestra visita.