Я не могу представить себе причину для написания этого кода, и я не совсем уверен, чего пытался достичь человек, написавший этот код. wait
здесь ничего не делает - с его точки зрения нет дочерних процессов, поэтому он просто выйдет сразу и будет действовать как noop ( wait
сам выполняет в дочернем процессе из-за подстановки команд, но это не связано).
Кстати, синтаксический анализ вывода ls довольно хрупок . Вместо этого рассмотрите возможность просто сделать это:
for file in *.txt; do
...
done
El código que publicaste es de la función "obtener encabezado _" que genera el texto en la primera fila. En su caso, esto se aplica al encabezado "1K -bloques" (llame df -B1023
para ver la diferencia ).
Importante tener en cuenta :"1K" se refiere a bloques de 1024 -bytes, no a bloques de 1000 -bytes (indicados por "bloques de 1kB -", consultedf -B1000
)
El cálculo de los números en el formato legible por humanos es manejado por la función "human _readable" (human.c :153 ). En df.c :1571 puede encontrar las opciones que se utilizan cuando se llama con la bandera -h
:
case 'h':
human_output_opts = human_autoscale | human_SI | human_base_1024;
output_block_size = 1;
break;
Todos los cálculos se realizan con base 1024 en formato legible por humanos (" -h" ). Además de las opciones humanas _de salida _que se muestran, hay una configuración predeterminada que se aplica aquí (consulte human.h, declaración de enumeración):
/* The following three options are mutually exclusive. */
/* Round to plus infinity (default). */
human_ceiling = 0,
/* Round to nearest, ties to even. */
human_round_to_nearest = 1,
/* Round to minus infinity. */
human_floor = 2,
Como la salida humana __opts no incluye humano _redondo _a _más cercano o humano _piso, utilizará su valor predeterminado de humano _techo. Por lo tanto, todos los valores calculados se redondearán hacia arriba.
Para verificar la configuración, podemos intentar calcular el formato legible por humanos en función de los bloques de 1K -dedf
:
Size = ceil(41943040/1024/1024) = ceil(40) = 40
Used = ceil(7659828/1024/1024) = ceil(7.305) = 7.4
Available = ceil(34283212/1024/1024) = ceil(32.695) = 33
Que es lo mismo que la salida de df -h
.
(... y si prefiere el formato de 1000 -bytes, simplemente puede llamar adf -H
).
Ni el programa df
de FreeBSD (aquí es donde df -h
es originalmente de )ni la implementación df
de Solaris se comportan de esta manera.
Dado que las fuentes de Solaris son OpenSource, puede verificar si puede compilar df
en su sistema operativo: