Pregunta de for en unix

Hola Frgal
Mi pregunta es acerca de un clico for en unix, estoy haciendo un shell para repetir la misma tarea en varios servidores. Utilizo el bucle for con la opción in, esta ultima para que me tome la lista de los equipos de un archivo. Como lo estoy poiiendo es así:
for i in servidores
> do
> ping $i
> Done
Pero al moento de correorlo me toma el nombre del archivo en lugar del contenido.la forma en que si corre es poniendo los servidores así:
for i in servidor1 servidor2 .. Servidorn
> do
> ping $i
> Done
Me podrías ayudar
Saludos

1 respuesta

Respuesta
1
Sencillamente, en la sentencia for debes poner:
for i in `cat servidores`
do
ping $i
done
Donde ` es el acento grave (tecla a la derecha de la p pulsando esta tecla y luego "barra espaciadora") y suponiendo que en el fichero servidores está la lista de servidores. Con el for se lee cada línea en cada iteración siempre que no haya espacios en blanco en una línea(supongo que es tu caso pues los nombres de servidores no tienen espacios). Si hubiera espacios en blanco, se debería usar la sentencia while:
while read i
do
ping $i
Done < servidores
Que hace lo mismo que el bucle que tú propones pero permite espacios en blanco en cualquiera de las líneas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas