GNU/Linux >> Tutoriales Linux >  >> Linux

¿Por qué se utiliza con tanta frecuencia `while Ifs=Read`, en lugar de `ifs=; Mientras lee..`?

Parece que la práctica normal colocaría la configuración de IFS fuera del ciclo while para no repetir la configuración para cada iteración... ¿Es esto solo un estilo habitual de "mono ve, mono hace", como lo ha sido para este mono hasta que leí hombre leyendo , ¿o me estoy perdiendo alguna trampa sutil (o descaradamente obvia) aquí?

Respuesta aceptada:

La trampa es que

IFS=; while read..

establece el IFS para todo el entorno de shell fuera del bucle, mientras que

while IFS= read

lo redefine solo para read invocación (excepto en el shell de Bourne).
Puedes comprobarlo haciendo un bucle como

while IFS= read xxx; ... done

luego, después de dicho ciclo, echo "blabalbla $IFS ooooooo" impresiones

blabalbla  ooooooo

mientras que después

IFS=; read xxx; ... done

el IFS permanece redefinido:ahora echo "blabalbla $IFS ooooooo" impresiones

blabalbla  ooooooo

Entonces, si usa la segunda forma, debe recordar restablecer:IFS=$' tn' .

La segunda parte de esta pregunta se fusionó aquí, por lo que eliminé la respuesta relacionada de aquí.


Linux
  1. Truncar un archivo mientras se está utilizando (Linux)

  2. ¿Por qué se usa select en Linux?

  3. ¿Por qué tenemos 3 tipos de selecciones X en LINUX?

  4. ¿Por qué mi interfaz ethernet se llama enp0s10 en lugar de eth0?

  5. ¿Por qué hexdump intenta leer EOF?

Por qué uso exa en lugar de ls en Linux

¿Por qué se congela el pc mientras copio un archivo a un pendrive?

¿Por qué se sigue utilizando el número de unidad/partición?

Linux vs Mac OS:15 razones por las que usar Linux en lugar de Mac OS

por qué se usa la lista de hermanos para obtener task_struct mientras se recuperan los elementos secundarios de un proceso

Por qué no se usa UASP