The UNIX and Linux Forums  
Hola y bienvenida de los Estados Unidos a la UNIX y Linux Foros! Gracias por su visita y formar parte de nuestra comunidad global.

Go Back   El UNIX y Linux Foros > Arriba Foros > Programación de scripts de shell y
.
google unix.com



Programación de scripts de shell y Plantear preguntas sobre KSH, CSH, SH, BASH, PERL, PHP, SED, AWK y otros scripts de shell y lenguajes de script de shell aquí.

Más UNIX y Linux Foro Temas usted puede encontrar útiles
Hilo Hilo para principiantes Foro Respuestas Último mensaje
bucle problema paddock Programación de scripts de shell y 2 09-23-2008 11:15 AM
problema de bucle mdap Programación de scripts de shell y 3 08-16-2008 02:27 PM
Problema en el caso de loop El Observador Programación de scripts de shell y 2 05-28-2008 03:43 AM
Problema con el bucle while y SQL nandajk UNIX for Dummies Preguntas y Respuestas 20 05-04-2007 07:19 AM
problema con el bucle while Mridula Programación de Alto Nivel 1 12-11-2005 11:44 AM

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
Linkback vínculo Herramientas de hilo Buscar en este Hilo Tasa de Hilo Modos de visualización
  #1 (Enlace permanente)  
Old 11-16-2008
dawn_1030 dawn_1030 is offline
Usuario Registrado
  
 

Fecha: noviembre 2008
Publicaciones: 2
Doble bucle while problema

Hola a todos, he encontrado un extraño problema con el doble bucle while. El objetivo de los dos, mientras que los bucles es comparar 2 archivos, tmplist.txt es el archivo de referencia con la lista completa de servidores. Por favor vea el cuadro adjunto de la lógica y la relación entre la entrada y salida.

2 mientras que los bucles deben búsqueda en los servidores / test.CSV en el / tmplist.txt, línea por línea. Por ejemplo, el primer tema de la búsqueda / test.CSV server2 en / tmplist.txt, a partir de la primera línea en / tmplist.txt (LINENUM \u003d 1), si no encontró entonces una salida 'NA' y luego pase a la siguiente línea en / tmplist.txt hasta que encuentra la adecuación server2, LINENUM y actualizar al mismo tiempo. Otras procederá a buscar en el siguiente servidor server3 en / de la tmplist.txt línea actual en adelante (desde todos los servidores siempre están enumerados en el orden alphabatic).

La variable LINENUM (el indicador de número de línea) utilizados en el interior del bucle while. Es predefinido como 1, si después de la condición if [$ SERVER \u003d $ Refs] es cierto, se LINENUM incremento y, a continuación, salir del bucle while interno y continuar en el exterior bucle while. Sin embargo, en el exterior, mientras que bucle, cada vez que los bucles y lee SERVIDOR COUNT, el LINENUM se inicia desde el valor inicial de 1 de nuevo en lugar de incrementar la LINENUM procedentes del interior bucle while.


A continuación se muestra parte del programa con los detalles de 2 mientras que los bucles.
Podría ayudar a alguien que me explique lo que está mal aquí? Este es mi primer UNIX asignación, que agradecemos su ayuda!


#! / bin / bash
TYPE \u003d P2PS
LINENUM \u003d 1

mientras que leer SERVIDOR COUNT; hacer

gato tmplist.txt | mientras que leer LÍNEA; hacer

Refs \u003d $ (cabeza - $ LINENUM tmplist.txt | tail -1)

if [$ SERVER \u003d $ Refs] y, a continuación,
dejar LINENUM + +
echo-n "," $ COUNT>> t.csv
romper
algo más
dejar LINENUM + +
echo-n ", NA">> t.csv
continuar
fi
hecho

hecho <test.CSV
Imágenes adjuntas
File Type: bmp untitled.bmp (177,0 KB, 13 visitas)
  #2 (Enlace permanente)  
Old 11-16-2008
Perderabo's Avatar
Perderabo Perderabo is offline Forum Staff  
Unix demonio
  
 

Fecha: agosto 2001
Ubicación: Ashburn, Virginia,
Mensajes: 9.122
El bucle interior es un sub-proceso. Nada ha cambiado allí no tiene ningún efecto sobre el proceso padre. Es la misma situación que

X \u003d 1
bash-c "X \u003d 2"
echo $ X

Ambos son los bucles de su lectura de la stdin. Cada proceso sólo tiene 1 stdin dos bucles de modo que su necesidad de ser absolutamente procesos separados.
  #3 (Enlace permanente)  
Old 11-16-2008
Creepy lisiado creepy cripple is offline
Usuario Registrado
  
 

Fecha: octubre 2008
Publicaciones: 2
No hay necesidad de 2 bucles, tienes que usar comandos unix poderoso en sus escrituras, al igual que grep. Esto debería funcionar:
Por supuesto, t.csv debe estar vacía antes de ejecutar el script.

mientras que leer LÍNEA
hacer
Aux \u003d $ (grep $ test.CSV LÍNEA)
if [[! -z $ auxiliares]]
entonces
echo "$ a los">> t.csv
algo más
echo "NA">> t.csv
fi
hecho <tmplist.txt
  #4 (Enlace permanente)  
Old 11-16-2008
elbrand elbrand is offline
Usuario Registrado
  
 

Fecha: abril 2008
Ubicación: Wolfenbuettel / Alemania
Publicaciones: 12
la lectura en el interior del bucle es un subproceso. Todos los valores de las variables establecidas o cambiado en el interior del bucle interior no se conocen fuera de él. Si los archivos son pequeños tratan de intercambio al mismo tiempo-en contra de la construcción de un bucle for. Si no, almacenar meta-información en el centro de archivos en bucle para que fuera. Pero esto puede disminuir la velocidad mucho.
Pero en realidad no veo la necesidad de doble bucle. ¿Por qué no grep tmplist.txt de cada línea en el primer archivo?
  #5 (Enlace permanente)  
Old 11-16-2008
Franklin52 Franklin52 is offline Forum Staff  
Moderador
  
 

Fecha: febrero 2007
Mensajes: 4.312
Una solución con awk:
Código:
awk '
NR==FNR{a[$1]=$2;next}
$0 in a{print $0,a[$0];next}
{print "NA"}
' test.csv tmplist.txt > t.csv
  #6 (Enlace permanente)  
Old 11-17-2008
dawn_1030 dawn_1030 is offline
Usuario Registrado
  
 

Fecha: noviembre 2008
Publicaciones: 2
Muchas gracias por sus respuestas! Realmente poderosos comandos!
Mi script funciona ahora. Gracias a todos!
Closed Thread

Marcadores

Etiquetas
comandos unix

Herramientas de hilo Buscar en este Hilo
Buscar en este Hilo:

Búsqueda avanzada
Modos de visualización Vota a este hilo
Vota a este hilo:

Normas de envío
puede que no nuevo puesto de hilos
puede que no enviar respuestas
puede que no enviar archivos adjuntos
puede que no editar sus puestos

Código BB es Encendido
Emoticones son Encendido
[IMG] código Encendido
Código HTML es Apagado
Trackbacks son Encendido
Pingbacks son Encendido
Refbacks son Encendido




Todas las horas son GMT -4. La hora es 02:02 PM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Traducciones de idiomas Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Estudios
El UNIX y Linux Foros Contenido Copyright © 1993-2009. Todos los derechos Reserved.Ad Gestión por RedTyger

Las direcciones URL de contenido vBSEO 3.2.0