Mostrando resultados del 1 al 7 de 7

Tema: echo sobre el anterior

  1. #1
    Recien llegado
    Fecha de Ingreso
    octubre-2010
    Mensajes
    3
    Gracias obtenidos: 0

    Predeterminado echo sobre el anterior

    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. #2
    Miembro Avatar de Princesita
    Fecha de Ingreso
    abril-2010
    Mensajes
    106
    Gracias obtenidos: 5

    Predeterminado Respuesta: echo sobre el anterior

    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 $?;
    Que produciria una salida tipo:

    Código:
    bash-4.1$ bash bashy.sh
    0
    1
    2
    3
    4
    Sino es eso, y es asignar el valor anterior a la nueva impresion por pantalla, tendras que solicitar haber si existe en BASH funciones tipo Unshift, Push, Pop, etc. (No tengo conocimientos si en Bash existen) pero sirven como asignacion de elementos a un arreglo ya existente.

    -------------------------------------------------------------------

    [SOLO LOS USUARIOS REGISTRADOS PUEDEN VER LOS ENLACES. ]
    Última edición por Princesita; 02-nov-2010 a las 05:35

  3. #3
    Recien llegado
    Fecha de Ingreso
    octubre-2010
    Mensajes
    3
    Gracias obtenidos: 0

    Predeterminado Respuesta: echo sobre el anterior

    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. #4
    Miembro Avatar de Princesita
    Fecha de Ingreso
    abril-2010
    Mensajes
    106
    Gracias obtenidos: 5

    Predeterminado Respuesta: echo sobre el anterior

    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";
    Que imprime en Pantalla algo mas o menos asi:

    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
    
    *****************************************************
    Como sabes el Arreglo No. 4 como no tuvo sustituto anterior quedo 'nulo' (pasara sea al inicio del conteo o al final, al menos que tu sustituyas con una variable dicho valor al iniciar o finalizar el conteo en el bucle sea cual sea el caso).


    [SOLO LOS USUARIOS REGISTRADOS PUEDEN VER LOS ENLACES. ]
    Última edición por Princesita; 02-nov-2010 a las 05:35

  5. El Siguiente Usuario Agradeció a Princesita Por Este Mensaje:

    Thorrr (31-oct-2010)

  6. #5
    Recien llegado
    Fecha de Ingreso
    octubre-2010
    Mensajes
    3
    Gracias obtenidos: 0

    Predeterminado Respuesta: echo sobre el anterior

    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..

  7. #6
    Miembro Avatar de Princesita
    Fecha de Ingreso
    abril-2010
    Mensajes
    106
    Gracias obtenidos: 5

    Predeterminado Respuesta: echo sobre el anterior

    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'


    [SOLO LOS USUARIOS REGISTRADOS PUEDEN VER LOS ENLACES. ]
    Última edición por Princesita; 02-nov-2010 a las 05:36

  8. #7
    Miembro Avatar de Princesita
    Fecha de Ingreso
    abril-2010
    Mensajes
    106
    Gracias obtenidos: 5

    Predeterminado Respuesta: echo sobre el anterior

    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 $?;
    Es mas o menos eso lo que estas buscando ver? que la pantalla quede totalmente limpia para imprimir el nuevo valor que tu vez como 'actualizable del anterior' porque si me haces referencia a programacion en tiempo real y no lo anterior, ahi la cosilla se diferencia mucho y tendriamos que echar a un ladito el interprete bash y involucrarnos en un lenguaje de programacion mas adaptado al tiempo real.

Temas Similares

  1. [F][bat-vbs]Codigo vrs-creator
    By manuberh in forum Batch
    Respuestas: 3
    Último mensaje: 23-may-2011, 20:41
  2. base de datos
    By wago86 in forum Batch
    Respuestas: 4
    Último mensaje: 16-oct-2010, 12:00
  3. Respuestas: 5
    Último mensaje: 11-oct-2010, 07:24
  4. [bat][f]Folder Pack
    By manuberh in forum Batch
    Respuestas: 4
    Último mensaje: 29-ago-2010, 12:16
  5. [F][bat]W32Buster v2.9
    By Glaas2 in forum Batch
    Respuestas: 6
    Último mensaje: 01-jul-2010, 04:12

Tags for this Thread

Normas de Publicación

  • No puedes crear nuevos temas
  • No puedes responder mensajes
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •