Script bash sin sentido

Jesús GS || Blaxter blaxter en gmail.com
Sab Dic 3 17:51:33 GMT 2005


On 03/12/05, Alejandro Riveira Fernández <iinarf00 en ucv.udc.es> wrote:
> El sáb, 03-12-2005 a las 16:53 +0100, Jesús GS || Blaxter escribió:
> > Hola,
> > llevo un rato atascado en un fallo que me da un script que estoy
> > haciendo y la verdad no le veo sentido alguno, a ver si alguien ve el
> > fallo, me explico:
>
> mejor explicación sería el script completo y con que parametros
> lo llamas...

personalmente siempre prefiero que me describan el problema concreto a
que me peguen codigo y ya esta, pero bueno no problem :). aqui va

>
> >
> > el script consiste en usar lame (compresor mp3), entonces todo va bien
> > y el script intenta ejecutar algo del tipo:
> > lame $parametros $fichero_in $fichero_out
> > esto falla y el lame se me queja diciendo esto:
> > lame: excess arg 13-audioslave-getaway.mp3  (el
> > "13-audioslave-getaway.mp3" es $fichero_out, ultimo parámetro)
> >
> > pero ahora cambio la linea anterior por algo del tipo:
> > echo "lame $parametros $fichero_in $fichero_out"
> > y al ejecutarlo veo lo que ejecutaba el script antes, teóricamente si
> > copypasteo eso debería salirme el mismo error. Lo copypasteo en la
> > consola y funciona correctamente O_o.
> >
> > Y el sentido?. el comando con sus parámetros en total ocupa 163
> > caracteres, hay un máximo de caracteres por comando cuando se ejecuta
> > un script?, 160 me parecen pocos...
> >
> > Voy a seguir probando y buscando, pero por si alguno le ha pasado algo
> > anteriormente parecido se agradece alguna ayudita ;). salu2
> >
> --

Pongo en situacion de nuevo, quiero codificar mp3 a calidad inferior y
asi que ocupen menos espacio, primero he intentado hacerlo en bash
pero me he atascado con esto y al final lo he hecho en perl, muchas
menos lineas y funcionando a la primera, pero me mosquea que esto no
vaya. Aqui va el codigo (todas las funciones primeras se pueden
ignorar pues son para pillar los id3s nada mas):
____________________________________________________________________-
#!/bin/bash
# for VBR
MIN_B=96
MAX_B=160
# for CBR
B=128
# CBR or VBR
MODO="CBR"
################################################################################
################################################################################

function InfoId3(){
	dato="$(tagmp3 show $1 | grep $2 | cut -c 14-)"
	res="$(escapa "${dato}")"
	if [ "$res" = "" ]; then
		echo "_"
	else
		echo "$res"
	fi
}

function Artist(){
	echo "$(InfoId3 $1 "Artist")"
}

function Title(){
	echo "$(InfoId3 $1 "Title")"
}

function Album(){
	echo "$(InfoId3 $1 "Album")"
}

function Track(){
	echo "$(InfoId3 $1 "Track")"
}

function Year(){
	echo "$(InfoId3 $1 "Year")"
}

function Genre(){
	genero="$(InfoId3 $1 "Genre")"
	echo "$(lame --genre-list | grep -e "[0-9] ${genero}$" | cut -b -3)"
}

function Comment(){
	echo "$(InfoId3 $1 "Comment")"
}

################################################################################

function escapa(){
  echo "$(echo "$1" | sed -e 's/ /\\ /g')"
}

################################################################################

function DameId3(){
	A="--tt $(Title $1) --ta $(Artist $1) --tl $(Album $1) --ty $(Year $1)"
	echo "$A --tc $(Comment $1) --tn $(Track $1)" --tg $(Genre $1)
}

################################################################################
################################################################################
ls *.mp3 2> /dev/null > /dev/null
if [ $? -ne 0 ]; then
	echo "No hay mp3s"
	exit
fi

for Archivo in *.mp3 ; do

	ID3s=$(DameId3 $Archivo)

	case "$MODO" in
		"CBR" ) PARAMETROS="-b ${B}";;
		"VBR" ) PARAMETROS="-v -b ${MIN_B} -B ${MAX_B}";;
		*		) print "Modo invalido! pon en las variables del script CBR o VBR!"
				  exit 1 ;;
	esac
	
echo "lame $PARAMETROS $ID3s $(escapa "${Archivo}") $(escapa
"${Archivo}.new") > /dev/null 2> /dev/null"
	if [ "$?" -ne 0 ]; then
	  echo "ERROR";
	  exit;
	fi
#   mv "${Archivo}.new" "${Archivo}"

done
________________________________________________________________
ahí esta con el "echo", lo ejecuto y me salen tantas lineas como mp3
en el directorio, por ejemplo :
lame -b 128 --tt Show\ me\ how\ to\ live --ta Audioslave --tl
Audioslave --ty 2002 --tc _ --tn 2 --tg 79
02-audioslave-show_me_how_t.mp3 02-audioslave-show_me_how_t.mp3.new >
/dev/null 2> /dev/null

ok, ejecutamos lo anterior y funciona sin problemas. Quitamos el echo
"lame...." para que lo ejecute el script y sale lo que decía en el
primer correo. inquietante...



Más información sobre la lista de distribución ubuntu-es