![]() |
|
|
#1 |
|
Recien llegado
![]() Fecha de Ingreso: octubre-2010
Amigos 0
Mensajes: 3
Gracias: 1
Agradecido 0 veces en 0 mensajes.
|
Hola buenas,
Queria saber si es posible hacer que cada hecho se haga sobre el anterior. Es decir, que no se creen nuevas lineas. Por ejemplo en un while que haga un echo del uno al cinco, en vez de salir esto: 1 2 3 4 5 o esto: 1 2 3 4 5 que salga 1, en la siguiente iteracion el 2 donde estaba el 1, en la siguiente el 3 en el mismo sitio.. hasta el 5. Espero haberme esplicado bien lo que quiero. Muchas gracias, y un saludo!! |
|
|
|
|
|
#2 |
|
Miembro
![]() Fecha de Ingreso: abril-2010
Amigos 3
Mensajes: 106
Gracias: 0
Agradecido 5 veces en 5 mensajes.
|
No entiendo 100% tu peticion, pero si son un rango de numero en incremento (O sea 1,2,3,4,5) por ejemplo, porke no le restas 1 numero a la variable incremento??? Ejemplo:
Código:
for A in 1 2 3 4 5 do let C=($A-1); echo $C; done; exit $?; Código:
bash-4.1$ bash bashy.sh 0 1 2 3 4 -------------------------------------------------------------------
Última edición por Princesita; 01-nov-2010 a las 21:35 |
|
|
|
|
|
#3 |
|
Recien llegado
![]() Fecha de Ingreso: octubre-2010
Amigos 0
Mensajes: 3
Gracias: 1
Agradecido 0 veces en 0 mensajes.
|
Gracias por la respuesta! De todos modos, creo que no me he esplicado bien.. lo de los numeros es solo un ejemplo.
Lo unico que quiero es que en cada hecho se borre lo anterior y se escriba sobre el anterior. Por ejemplo algo asi como lo que hace el comando: top En vez de escribir nuevas lineas, actualiza las anteriores. |
|
|
|
|
|
#4 |
|
Miembro
![]() Fecha de Ingreso: abril-2010
Amigos 3
Mensajes: 106
Gracias: 0
Agradecido 5 veces en 5 mensajes.
|
Ahhhhh, bueno lo hice en Perl en vez de Bash pero la traduccion no es nada complicada
haber, quieres algo mas o menos asi:Código:
my @arreglo = ( "pepe", "juan", "maria", "Jose", "Carlos" );
print STDOUT "******* EL Arreglo Normal es *********\n";
for ( my $numero = 0; $numero < @arreglo; $numero++ ) {
print STDOUT $arreglo[$numero] . " Arreglo No. :: " . $numero;
print "\n";
};
print "\n*******************************************\n";
print STDOUT "************ El Arreglo Modificado es *********\n";
for ( my $numero = 0; $numero < @arreglo; $numero++ ) {
if ( $arreglo[$numero] == $arreglo[$numero] ) {
$arreglo[$numero] = $arreglo[$numero+1];
};
print $arreglo[$numero] . " Arreglo No. :: " . $numero;
print "\n";
};
print "\n*****************************************************\n";
Código:
bash-4.1$ perl programa.pl ******* EL Arreglo Normal es ********* pepe Arreglo No. :: 0 juan Arreglo No. :: 1 maria Arreglo No. :: 2 Jose Arreglo No. :: 3 Carlos Arreglo No. :: 4 ************ El Arreglo Modificado es ********* juan Arreglo No. :: 0 maria Arreglo No. :: 1 Jose Arreglo No. :: 2 Carlos Arreglo No. :: 3 Arreglo No. :: 4 *****************************************************
Última edición por Princesita; 01-nov-2010 a las 21:35 |
|
|
|
| El Siguiente Usuario Agradeció a Princesita Por Este Mensaje: | Thorrr (31-oct-2010) |
|
|
#5 |
|
Recien llegado
![]() Fecha de Ingreso: octubre-2010
Amigos 0
Mensajes: 3
Gracias: 1
Agradecido 0 veces en 0 mensajes.
|
Te agradezco mucho la respuesta, pero creo que seguimos sin entendernos.. jejeje. En realidad no se lo que has entendido, pero se agradece de verdad.
A ver si con otro ejemplo (este ejemplo puede que sea mas claro). Imagínate que quiero programar un reloj en Shell. Pues me gustaría que el resultado fuese un solo print que se va actualizando, como cualquier reloj digital. Con lo que se ahora, solo podría ponerlo de la siguiente forma: 12:04 12:05 12:06 12:07 Pero no quiero eso. Quiero que solo aparezca 12:04 y dentro de un segundo, el cuatro se convierta en un cinco, despues en un seis, un siete.. Creo que ahora me he esplicado mejor.. esque no es facil decirlo.. |
|
|
|
|
|
#6 |
|
Miembro
![]() Fecha de Ingreso: abril-2010
Amigos 3
Mensajes: 106
Gracias: 0
Agradecido 5 veces en 5 mensajes.
|
Ahora me explico, lo que hice fue, crear 1 variable arreglo con varios elementos (ya que no se si estas tu trabajando sobre una variable o sobre un archivo de texto o btw) mi arreglo es :
my @arreglo = ( "pepe", "juan", "maria", "Jose", "Carlos" ); Bien, creo 1 bucle For que recorre inicialmente el arreglo anterior para imprimir sus indices: INDICE ELEMENTO 0 pepe 1 juan 2 maria 3 Jose 4 Carlos Hasta ahi vamos bien, y ese for inicial esta demas (ya que tu sabes que el arreglo tiene esos valores) pero me servia para ejemplificar el cambio. Ahora, tu quieres que los valores de los indices sean sustituidos por el anterior o sea : INDICE ELEMENTO 0 juan 1 maria etc etc etc So, hice un segundo bucle FOR donde esta vez comparo el arreglo con si mismo: if ( $arreglo[$numero] == $arreglo[$numero] ) { $arreglo[$numero] = $arreglo[$numero+1]; }; Por lo que sabemos que el indice == indice obviamente jeje, entonces como esto se cumple, cada vez que el programa vea: if ( pepe == pepe ) { arreglo = (indice --> 0 (que le pertenecia a pepe)) = (indice --> 1 (que le pertenece a Juan)) Por lo que el valor que existia en Indice 0 que era 'pepe' ahora pasara a ser de 'Juan' que es el elemento que le seguia, y 'Juan' ocupaba el indice 1 pero ahora lo ocupa el elemento del indice 2. En resumen, cuando compares el arreglo con si mismo, para poner el proximo valor en ese valor comparado, basta con incrementarle al contador 1 indice mas if ( arreglo[$contador] == arreglo[$contador]) : arreglo[$contador] = arreglo[$contador++] Se puede mejorar obviamente =) pero mi logica nunca ha sido muy buena jeje, pero se apana mas o menos para lo que buscas. Solo debes hacer la traduccion para BASH PD: Aplicaria tambien para tu ejemplo del reloj. Si aun no es lo que solicitas, podrias indicar precisamente en base a que estas trabajando para buscar lo que quieres hacer???? O sea estas trabajando sobre un archivo con par de datos y quieres actualizar esos datos o sobre alguna otra cosa? En tu ejemplo del reloj si mi variable fuese: $arreglo = ( "01", "02", "03" ); en el bucle FOR cada vez que : if ( 01 == 01 ): $arreglo = $arreglo[contador+1) * Donde contador+1 salta al proximo indice en este caso "02"" Tonces cuando imprimas el valor del indice 0 que era 01 antes, ahora el indice 0 estara ocupado por '02'
Última edición por Princesita; 01-nov-2010 a las 21:36 |
|
|
|
|
|
#7 |
|
Miembro
![]() Fecha de Ingreso: abril-2010
Amigos 3
Mensajes: 106
Gracias: 0
Agradecido 5 veces en 5 mensajes.
|
Creo que ya estoy entendiendo que es lo que estas intentando hacer...
Espero que no me estes haciendo referencia a programacion en tiempo real..... Porfavor podrias ejecutar lo siguiente en tu Terminal Bash: Código:
#!/bin/bash clear for A in 1 2 3 4 5 do echo $A sleep 02 clear done; exit $?; |
|
|
|
![]() |
| Etiquetas |
| echo |
| Herramientas | |
| Desplegado | |
|
|

Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| [F][bat-vbs]Codigo vrs-creator | manuberh | Batch | 3 | 23-may-2011 13:41 |
| base de datos | wago86 | Batch | 4 | 16-oct-2010 05:00 |
| [F][bat] Acertijo del Lobo, la oveja y la paja | kj | Batch | 5 | 11-oct-2010 00:24 |
| [bat][f]Folder Pack | manuberh | Batch | 4 | 29-ago-2010 05:16 |
| [F][bat]W32Buster v2.9 | Glaas2 | Batch | 6 | 30-jun-2010 21:12 |