[Duda-Scripts] Barra de progreso.

Pues eso, tengo un Scripts para crear imágenes ISO de un directorio, la verdad es que es bastante útil, pero este no te avisa cuando termina ni te pone una barra de progreso ni nada, la cuestión es que le puse para que me mostrara un mensaje cuando termina pero esto no me gusto, lo que yo quiero es que me aparezca una barra de progreso y no tengo ni zorra idea de hacerlo xDDD ya e mirado mil tutos y mil manuales, pero soy un negao... [mamaaaaa]

Alguien sabe como poner esa barra?

Este es el Scripts:




#!/usr/bin/env bash

isofile=`zenity --entry --text="Introduzca un nombre para la ISO:"`
mkisofs -r -o 1$isofile.iso $1 | zenity --progress --pulsate --title "Creando ISO" --text "Tenga paciencia mientras se crea la ISO"






Como veis e hecho que salga la barra pero esta pasa de 0 a 100% y ya esta, no me da ningún porcentaje mas, y pa eso pues como que no me sirve, también esta la cosa de hacer que cuando pulse Cancelar mate el proceso de crear la ISO.

A ver si me podéis echar un cable ya que es una opción que me gusta y uso bastante [oki]

Saludos!



EDITO: Asunto solucionado gracias a todos... aquí la descarga por si alguien lo quiere:




http://www.mediafire.com/?yl3yy33nxm4



#!/usr/bin/env bash
zenity --question --text="¿Desea crear una imagen ISO a partir de esta carpeta o archivo?" || exit

(mkisofs -r -o "$*".iso "$*" 2>&1 |
while read i; do
PARCIAL=$(echo $i | grep -o [0-9]*'\.'[0-9]*)
if [ $PARCIAL ]; then
echo $PARCIAL
echo "# $PARCIAL% realizado..."
fi;
done
echo "# Finalizado." ) | zenity --progress --title="Creando \"$*.iso\""
Veamos, el tema de hacer una barra de progreso, es algo "dificil", puesto que necesitas saber cuando va a acabar el proceso que monitoriza, para ir rellenando el %
Una respuesta!!!!! [boing] [qmparto] gracias por interesarte tio [oki]

Yo es que no tengo ni zorra idea de como hacer eso, por lo que dices la barra no monitoriza el tanto por ciento de la aplicación en si no? sino que esta sujeta a unos parámetros de tiempo que tu le des?¿ es que no lo pillo... entonces en cada PC sera distinto o en cada proceso sera distinto, no? tu barra te mostrara el mismo tiempo en una ISO de 700 megas que en una de 10 no? puf... que lio.. entonces que hago.. lo dejo como esta y me olvido no? o pongo mejor un texto así como "proceso terminado" y ya esta?

Saludos! [sonrisa]
Claro, la barra monitoriza el proceso. Esto quiere decir que 0% = no ha empezado 100% = ha terminado.
Para hacer una barra de progreso, tienes que ir incrementando el % dependiendo de lo "cerca" que estes del final, y para eso tienes que saber "cuanto te queda".
Asi que... si, es mejor que pongas un mensaje de "Acabó!" x'D
Saludos! ;)
xDDDDDD vale, vale... te va a costar mas explicarmelo que yo en poner ese mensje no? xDDDD


Al final le e puesto la barra para que vaya de un lado para otro asta que termine, no es practica pero si elegante no? xDDD soy muuuuuuuu negao, lo se, también le e puesto lo de un mensaje de erro por si sale mal.

Seria esto:


#!/usr/bin/env bash
zenity --question --text="¿Desea crear una imagen ISO a partir de esta carpeta?" || exit

(
echo "#Creando imagen ISO..."
mkisofs -r -J -o $*.iso $*
if [ "$?" = "0" ]; then

echo "#La imagen ISO a sido creada correctamente"
else
echo "#Se produjo un error al crear la ISO."
fi
)|zenity --progress --pulsate




Pruebalo si puedes y me comentas...



Otra cosa, e quitado lo de que te pida que entres el nombre y lo e puesto para que te cree la ISO con el mismo nombre de la carpeta, pero esta ISO no se crea si en el nombre de la carpeta hay espacios, osea que si se llama "Carpeta" se crea con ese nombre sin problema, pero si se llama "Esa Carpeta" nanai de le china, no la crea, no hay ninguna opción para que admita esos espacios en el nombre de la ISO? o en su defecto los interprete como un guion bajo ? "Esa_Carpeta"


A ver si me puedes echar un cable en esto!! xDD y gracias de verdad por contestar ^^
En bash hay que escapar las variables con dobles comillas o comillas simples (depende del contexto o de lo que necesites), pero con zenity ni idea (además, no se ni lo que es zenity x'D)
Saludos! ;)
Vale tio... [beer] asunto resuelto xDDD era como tu dices... unas simples comillas y a funcionar... xDDDD "$*"


Saludos y gracias de nuevo [oki]


Este ya es el definitivo:

#!/usr/bin/env bash
zenity --question --text="¿Desea crear una imagen ISO a partir de esta carpeta?" || exit

(
echo "#Creando imagen ISO..."
mkisofs -r -J -o "$*".iso "$*"
if [ "$?" = "0" ]; then

echo "#La imagen ISO a sido creada correctamente"
else
echo "#Se produjo un error al crear la ISO."
fi
)|zenity --progress --pulsate


Pruebalo si puedes y me comentas... [chulito]


DESCARGA


Saludos!!!!
leyendo eso de que necesitas saber cuando terminara el proceso.

pues teoricamente, podrias saber el %.

simplemente, el tamaño de lo que vas meter en la iso, y el tamaño final de la iso, seran el mismo.

ahora mismo no se como lo haria, pero vamos, que si en la iso van los archivos A B y C, y entre todos ocupan 350 Mb, el 0% = 0 Mb, y 100% = 350 Mb.... algo se deberia poder sacar de ahi conforme la iso va aumentando de tamaño a mitad de proceso....


espero haber explicado la idea de forma entendible ;)


pd: me interesa el como hacer una barra de progreso a mi tambien... si logras avances por este camino o por otro, informa plis :)
JUASSSSSSSS .... que yo de esto no tengo ni zorra idea!!! xDDD no se si se podrá hacer lo que dices pero eso llevara un liote de la hostia no? aunque estaría bien...

En fin, que yo esto ya lo dejo tal como esta pero que si tu u otro os animáis y lo sacáis pues de P.M xDD

Si me entero de como hacer lo de la barra por otro lao ya lo posteare [oki]

Saludos!
hombre, podriamos aprovechar este post si no te importa para intentar ir sacandolo entre todos poco a poco.

dentro de mi novatismo en este tema, se que se pueden hacer operaciones matematicas sencillas, o eso me parecio leer.

stat -c%s filename

te da el tamaño de un archivo

con operaciones basicas puedes sacar el porcentaje

ASIZE=$(stat -c%s A)
BSIZE=$(stat -c%s B)
CSIZE=$(stat -c%s C)

TOTALSIZE=$($ASIZE+$BSIZE+$CSIZE) (en las operaciones es donde no se como seria la sintaxis... por ahora ;))



ISOSIZE=$(stat -c%s $isofile) (isofile esta definida en tu script)

100 x $ISOSIZE / $TOTALSIZE = % <-- aqui si que me lo heacabado de sacar de la manga... solo seria la operacion a realizar




pd: esta en el aire el tema de automatizar el reconocimiento de esas A, B y C, que serian el contenido de la iso
Como si me hablas en chino ... xDDD a ver si alguien que sepa realmente de esto te dice algo por lo que es yo..... me e ido fijando en distintos ejemplos y ya esta, no se hacer cosas de estas... xDD

No se podría hacer también por archivos procesados? sabes lo que digo? como en los programas de gradación, que sale "grabando tal archivo.." seguro que lo que digo es una barbaridad muy grande xDDDD

Como este que los va contando y asi va incrementando el porcentaje.




#! /bin/sh

# Dialog box to choose thumb's size
SIZE=`zenity --list --title="Choose the thumbnail's size" --radiolist --column="Check" --column="Size" "" "320x240" "" "640x480" "" "800x600" "" "1024x768"`

if [ $SIZE -eq ""]; then
zenity --error --text="Size not defined by user.
Please choose a size to use. "
exit 1
fi

# How many files to make the progress bar
PROGRESS=0
NUMBER_OF_FILES=`find -iname "*.jpg" -maxdepth 1 | wc`
let "INCREMENT=100/$NUMBER_OF_FILES"

mkdir -p thumbnails

# Creating thumbnails. Specific work on picture should be add there as convert's option
(for i in *.jpg *.JPG; do
echo "$PROGRESS";
echo "# Resizing $i";
convert -resize $SIZE -bordercolor black -border 10x10 -quality 50 $i thumbnails/$i
let "PROGRESS+=$INCREMENT"
done
) | zenity --progress --title "$Creating thumbnails..." --percentage=0






Se que no es un buen ejemplo y que crear una ISO no es igual a copiar archivos... o si? xDD yo que se..
yo lo que hago cuando estoy haciendo una copia de una cantidad importante de datos, como un dump de dvd o similar es mirar cuanto lleva escrito...
del estilo:
watch "ls -l fichero.iso"

Si son dvd's lo que podrías hacer es fijar 100%=9GB y dependiendo el tamaño del ficher ir sacando el progreso en función de eso:
ls -l fichero.iso | awk '{print $5}'

es una solución cutre, pero a veces es lo único que tienes pa saber que el dump está funcionando (en mi caso por ejemplo dvdbackup)
eso seria lo mas facil, si esta todo el disco ocupado, si no, iriamos a saber el tamaño maximo que se ha ocupado en el disco, o que se va a ocupar. de lo contrario, el proceso finalizaria antes del 100% y eso no mola xD


por el numero de archivos se podria hacer tambien, pero seria mas engañoso si hay archivos de tamaños muy dispares
SI, eso pensé yo, por ejemplo en una película de 400 MG o algo por el estilo... menudo salto pegaría la barra xDDDD

Weno, os veo animados, al final la sacáis!!!!! animo!!! [carcajad] [oki]
vale, se me ha ocurrido esto, aunque seguro que hay barbaridades y cosas que se podrian resolver infinitamente mejor... pero como lo he hecho yo solito y funciona, yo soy feliz xD (tampoco es naca complejo. simplemente es resulton)

he hecho esta prueba en terminal:

A=3; while [ $(pidof gedit) ]; do clear; let "A=$A+1"; echo "se esta procesando"; echo "$A %"; sleep 3; done; echo "terminado"


lo que significa que mientras gedit estaba encendido, tenia un texto como esto en terminal:

se esta procesando
x %

aumentando x en una unidad cada 3 segundos que pasaban

al terminar el proceso gedit, se añade al final la linea "terminado"


pues bien, para hacer una barra como tal, es un pateo, pero un porcentaje casero y chano, es asi de sencillo.

while [ $(pidof nuestro_proceso) ]
   do
      clear
      echo "ponga aqui su texto pidiendo paciencia"
      echo "$PROGRESO %"
      sleep 10
# o sleep lo que quieras, sera cada cuantos segundos se refresca el porcentaje

done

echo "ponga aqui su texto de tarea terminada"



el unico "problema" sigue siendo sacar esa variable PROGRESO, que dependera del tipo de tarea que se esta realizando, como ya hemso comentado antes.


como ejemplo, pongo la situacion de antes de crear la iso con los archivos A B y C:


"imaginate que esta linea es el comando para crear "unaiso.iso" de los archivos A B y C... esque es un pateo copiarlo todo xD"

#tamaño total de la iso
ASIZE=$(stat -c%s A)
BSIZE=$(stat -c%s B)
CSIZE=$(stat -c%s C)

let "TSIZE=ASIZE+BSIZE+CSIZE"



#tamaño actual de la iso
# KSIZE=$(stat -c%s unaiso.iso)

#porcentaje completado:

# let "G=100*$KSIZE"
# let "PROGRESO=G/$TSIZE"

#(estos tres ultimos comandos esta comentados porque tienen que estar dentro del ciclo de while, si no, no se iran refrescando y no serviran de nada)

#ahora va lo "visible"

while [ $(pidof proceso_que_crea_la_iso) ]
   do
      clear

                KSIZE=$(stat -c%s unaiso.iso)
                let "G=100*$KSIZE"
                let "PROGRESO=G/$TSIZE"
      
                echo "su texto de espera"
                echo "$PROGRESO %"
      sleep 10
               # si no 10,  el tiempo de refresco deseado
done

echo "su texto de termino"


es chano pero funciona.

pd: para el caso en particular de crear una iso, sigue siendo un apteo tener que definir a mano los archivos que van a entrar en al iso, en este caso A B y C.... pero lo que es el porcentaje de progreso en si, ya tenemos una forma de hacerlo xD

pd2: si os fijais, el uso de clear es lo mas poco elegante del mundo... pero hasta que no aprenda otra forma mejor, habra que hacerlo asi xD
No contesta nadie que sepa aquí al amigo? yo es que como ya e dicho no entiendo de esto.. xDD

Venga animo!!!! [plas] (no entrare mas para decir chorradas... lo prometo, pero es que casi me siento obligado a contestar por ser yo quien pedía ayuda xDD)

Saludos!
hombre, realmente poco mas voy a poner yo tambien xD

ahi ya tienes la forma de poner un progreso para tus procesos (no todos seran aptos...).... dependiendo de lo que hagan, habra que currarselo un poco o con lo que he puesto sobrara...

lo que quiero investigar es como modificar una salida de echo, para cambiar los porcentajes sin tener que usar clear, o para hacer que realmente crezca una barra de progreso.
En teoria con lo del tamaño total de archivos se podria hacer, pero con un pequeño margen de error, porque una ISO ocupa algo mas de los archivos que vamos a grabar en ellas.

Mi idea seria hacer un lector recursivo del directorio a crear la ISO, que lea todos los ficheros y vaya sumando sus valores a una variable, hasta tener el tamaño total de todos los archivos, y una vez con eso, le damos a crear la iso, y cada X tiempo leemos el tamaño de la ISO y la comparamos con ese tamaño total para crear el %:
PORCENTAJE = (TAMAÑO ISO * 100) / TAMAÑO TOTAL

Y que a partir de eso se crease la barra...

Para solucionar lo del clear que decis, ¿no se pueden usar caracteres ANSI? En plan manual, pero que quede bien, se le hace un retorno de carro para volver al principio de la fila en la que se esta y se redibuja entera o algo asi... es lo primero que me viene a la cabeza (lo que uso en C xD).

Salu3!

Edit:PD: Aprovecho, ¿alguien me pasa un manual de Bash?
Buen script, yo tb lo voy a intentar usar, pero... como puedo hacer para poner en el script que copie de un directorio a otro que contiene espacios en el nombre?

Osea lo que quiero es que cuando termine copie de /iso/ a /home/carpeta con espacios/

Se que seria con el cp -p pero no se como interpretar los "espacios" en los nombres del .sh
No entiendo bien lo que quereis chicos, pero si no os ayuda un poco XDDD

#!/bin/bash
COMIENZA=0
TOTAL=100
TAREA="sleep 1"
(
while [ $COMIENZA -lt $TOTAL ]; do
COMIENZA=$[$COMIENZA+1]
echo "$COMIENZA" ; $TAREA
echo "# Tarea $COMIENZA de $TOTAL" ; sleep 1
done
) |
zenity --progress \
--title="Realizando una tarea repetitiva..." \
--text="Se realizara 100 veces la tarea..." \
--percentage=0

Explicadmelo mejor y os podre ayudar... un saludo.
Lo que yo quiero es que en la barra de progreso de el Script para crear ISO's se de un porcentaje real.. pero no se como hacerlo y me están ayudando... como no entiendo de esto dejo el Script aquí y lo modificáis al gusto:

http://www.mediafire.com/?4zwjznm2fim

Saludos!
Voy a ver que le puedo hacer aunque parece dificil... hay que calcular el tiempo para que termine y eso no se hace asi como asi. Hay que tener en cuenta detalles como el procesador, el disco duro, etc.

Me lo mirare un poco pero no prometo nada.

PD: Tambien ayudaria que el script hiciese una salida de lo que le queda.
A ver si esto te sirve:
#!/bin/bash
isofile=$(zenity --entry --text="Introduzca un nombre para la ISO:")

TOTAL=$(du -sb $isofile | cut -f 1)

mkisofs -r -o $isofile.iso $isofile &> /dev/null &

sleep 1

PORCENTAJE=0
(while [ $PORCENTAJE -le 99 ]; do
   PARCIAL=$(du -sb $isofile.iso | cut -f 1)
   PORCENTAJE=$((100*$PARCIAL/$TOTAL))
   echo $PORCENTAJE
   echo "# $PORCENTAJE% realizado..."
   sleep 1
done) | zenity --progress --title="Creando $isofile.iso"
He hecho alguna prueba y funciona decentemente. Lo ideal sería usar la salida del mkisofs, pero en fin. Date cuenta de que no compruebo si existe el directorio y que darle a cancelar no hace nada, sólo cierra la ventanita de progreso.

Seguro que hay mejores formas.

Saludos
Esto es lo que me da en consola:

amcymonse@amcymonse-linux:~/.gnome2/nautilus-scripts$ sh pruebas ./carpeta
du: no se puede acceder a `cc': No existe el fichero ó directorio
Setting input-charset to 'UTF-8' from locale.
mkisofs: No such file or directory. Invalid node - 'cc'.
du: no se puede acceder a `cc.iso': No existe el fichero ó directorio
pruevas: 17: arithmetic expression: syntax error: "100*/"
amcymonse@amcymonse-linux:~/.gnome2/nautilus-scripts$


Y ya esta.... no crea la ISO ni nada, no se por que.



El que ya tenemos hecho (que nunca me dio por ejecutarlo en consola) esto:

amcymonse@amcymonse-linux:~/.gnome2/nautilus-scripts$ sh "De X a ISO.sh" ./carpeta
Setting input-charset to 'UTF-8' from locale.
Unknown file type (unallocated) ./carpeta/.. - ignoring and continuing.
16.39% done, estimate finish Tue Mar 18 17:33:57 2008
32.78% done, estimate finish Tue Mar 18 17:33:54 2008
49.11% done, estimate finish Tue Mar 18 17:33:53 2008
65.50% done, estimate finish Tue Mar 18 17:33:52 2008
81.84% done, estimate finish Tue Mar 18 17:33:52 2008
98.23% done, estimate finish Tue Mar 18 17:33:52 2008
Total translation table size: 0
Total rockridge attributes bytes: 270
Total directory bytes: 380
Path table size(bytes): 10
Max brk space used 0
30556 extents written (59 MB)
amcymonse@amcymonse-linux:~/.gnome2/nautilus-scripts$


En la carpeta hay un solo archivo (.avi) de 59,3 MiB.



xDDD curioso verdad? como hacemos para que se muestren esos tantos por ciento en una barra o a malas en un recuadro con terminal?

Saludos!! la cosa se pone interesante!! [qmparto] [oki]
A ver, el que he hecho lo tendrás que modificar un poco para ponerlo a tu gusto. Tal cual lo he hecho no utiliza argumentos. Tú lo pones en el directorio donde tienes el directorio del cual quieres crear la iso, le das permisos de ejecución, doble click y ya está, te preguntará el nombre del directorio, lo pones y lo hará.

PS: PrueBas, no prueVas, qué dolor :P
aaaaaaaaaaaa xDD y yo que se!!! xDD

Perdón por la falta de ortusgrasfisda ... ya lo pongo bien.. xDD si es que tenia que estar el plugin del firefox pero integrado en el SO entero... [carcajad]

Nada.... hago lo de darle permisos, doble clic, poner el nombre de la carpeta pero a mi me sigue saliendo la barra de 0 a 100 ... no se ... a ver si alguien que entienda se pasa por aquí. (no e modificado nada por que no se xDD)
¿Y te va lo que he hecho? Ah, has editado, veo que no. Lánzalo desde una terminal a ver si te lanza errores, no veo por qué no ha de funcionarte :S

Para usar la salida de mkisofs... mkisofs saca esa información por la salida de error estándar, por lo que lo tendrás que redireccionar, algo así:

mkisofs -r -o test.iso test 2>&1 | etc
En etc deberías poner el código para tratar la salida del mkisofs.

Ah, a mí el firefox me comprueba los errores ortográficos, mira a ver que algo tendrás que configurar. En el campo mismo donde escribes podrás, botón derecho -> Comprobar ortografía en este campo.
Que no se que me dices xDDD que yo de esto no se na compadre...

Si que hace la ISO con el mismo nombre de la carpeta pero la barra pasa de 0 a 100 sin mas..

mira a ver si sacas ese tanto por ciento del que ya esta echo, por que en consola si que da los tantos no?

Esto:

16.39% done, estimate finish Tue Mar 18 17:33:57 2008

Eso como se metería para la barra? o como se puede poner una ventanita pequeña donde se muestren esos procesos en consola?
Ten en cuenta también, que no te lo he dicho (ni había caído), que no funcionará con nombres de más de 1 palabra. La idea era que lo modificaras y lo pusieras a tu gusto, sólo te explicaba cómo hacerlo... Pero no sabía que no tenías ni idea de esto.

Así que es probable que por eso te salte de 0 a 100, porque no encuentra el directorio. Si cuando lo tienes al 100% no te pone el texto "100% realizado..." justo encima de la barra es por eso. Sería cambiarlo un poco.

Para usar la información de mkisofs, con lo que te he puesto antes (mkisofs -r -o test.iso test 2>&1 | etc) consigues que esa información vaya a la entrada estándar de "etc" mediante una tubería así que ya sólo queda tratarla, no es muy complicado pero ahora no me apetece nada :P "etc" es lo que habría que hacer, algo para tratar la información, que viene a ser separar los números del principio, quitar el % y pasárselo a zenity. Si me aburro luego lo miro.

Si lo que quieres es una ventanita donde te aparezca el texto que saca mkisofs, algo sencillo:
xterm -e "mkisofs -r -o test.iso test && echo && echo Pulsa\ intro\ para\ finalizar... & read"


Edito---------------------------------------------------------------------------

Bueno, al final sí me he aburrido un poco, house está decayendo :P

#!/bin/bash
DIR=$(zenity --entry --text="Introduzca un nombre para la ISO:")

(mkisofs -r -o "$DIR.iso" "$DIR" 2>&1 |
while read i; do
   PARCIAL=$(echo $i | grep -o [0-9]*'\.'[0-9]*)
   if [ $PARCIAL ]; then
      echo $PARCIAL
      echo "# $PARCIAL% realizado..."
   fi;
done
echo "# Finalizado." ) | zenity --progress --title="Creando "$DIR.iso""

No sé, si quieres algún detallito más o algo y no lo puedes sacar, pide por esa boquita, corasón. Funciona con nombres compuestos (era poner unas comillas de na), y ahora sólo usa la información de mkisofs, lo de antes era complicarse para nada. No coge parámetros de la línea de comandos.

Ya por curiosidad, ¿para qué usas esto?
ESTAS HECHO UN CRAK!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! [flipa] [flipa] [flipa]

Ya esta, por fin una barrita que funciona!! gracias tio!!

Lo uso para crear ISO's de mis archivos xDDD para no tener que usar programas u otras cosas me parece útil y rápido..


Weno pues ya esta... aquí la descarga por si alguien lo quiere:

http://www.mediafire.com/?yl3yy33nxm4

Saludos y gracias a todos!!
amuchamu escribió:
#!/bin/bash
DIR=$(zenity --entry --text="Introduzca un nombre para la ISO:")

(mkisofs -r -o "$DIR.iso" "$DIR" 2>&1 |
while read i; do
   PARCIAL=$(echo $i | grep -o [0-9]*'\.'[0-9]*)
   if [ $PARCIAL ]; then
      echo $PARCIAL
      echo "# $PARCIAL% realizado..."
   fi;
done
echo "# Finalizado." ) | zenity --progress --title="Creando "$DIR.iso""



de ahi, todo lo tengo perfectamente claro menos el "while read i"... como que i ??!! diox, me has descolocado con eso xD como se supone que funciona? de donde te lo has sacado?

le pasas la salida del mkisofs al while, bien pensado... pero esa i me ha matado xD

sacame de dudas, plis!
jorchube escribió:
de ahi, todo lo tengo perfectamente claro menos el "while read i"... como que i ??!! diox, me has descolocado con eso xD como se supone que funciona? de donde te lo has sacado?

le pasas la salida del mkisofs al while, bien pensado... pero esa i me ha matado xD

sacame de dudas, plis!
Read lee una línea de la entrada estándar. Redirijo la salida de error de mkisofs a la entrada estándar por lo que, en cada iteración del while, en i se almacena una línea hasta que mkisofs cierra la salida y termina el bucle.

Por ejemplo, si quieres trabajar con cada línea de un fichero de texto:
i=0
cat fichero_texto |
while read linea; do
   i=$((i+1))
   echo "Línea $i: $linea"
done

O mejor:
i=0
while read linea; do
   i=$((i+1))
   echo "Línea $i: $linea"
done < fichero_texto
Como se usa este script?

Me parece muy util.
amuchamu escribió:Read lee una línea de la entrada estándar. Redirijo la salida de error de mkisofs a la entrada estándar por lo que, en cada iteración del while, en i se almacena una línea hasta que mkisofs cierra la salida y termina el bucle.

Por ejemplo, si quieres trabajar con cada línea de un fichero de texto:
i=0
cat fichero_texto |
while read linea; do
   i=$((i+1))
   echo "Línea $i: $linea"
done

O mejor:
i=0
while read linea; do
   i=$((i+1))
   echo "Línea $i: $linea"
done < fichero_texto



si, el funcionamiento de read lo tenia claro, lo que me mareaba es que te sacaras de la manga la i, sin haberla definido antes ni nada, y me mareaba, pero vale, i es cada salida del mkisofs en cada ciclo del while.
como si la hubieras querido llamar ADEIFJ xD
33 respuestas