IINM mon système échoue lors du bash
for i in {0..10000000}; # Seven zeroes. do false; done # `bash` exited and its `tmux` pane/window was closed.
ou
for i in $(seq 0 10000000); # Seven zeroes. do false; done # `bash` exited and its `tmux` pane/window was closed.
mais pas quand
for i in {0..1000000}; # Six zeroes. do false; done # Finished correctly.
Pouvez-vous s'il vous plaît expliquer brièvement les internes de ce comportement et requestr une solution de contournement pour accomplir la tâche?
for i in {0..1000000}
et for i in $(seq 1000000)
deux construisent une grande list et la bouclent ensuite. C'est inefficace et utilise beaucoup de memory.
Utilisation:
for ((i = 0; i<= 1000000; i++))
au lieu. Ou POSIXly:
i=0; while [ "$i" -le 1000000 ]; do ... i=$(($i + 1)) done
Ou:
seq 1000000 | xargs...
Pour get un file plein de CRLF:
yes $'\r' | head -n 1000000 > file
Généralement, les loops doivent être évitées lorsque cela est possible dans les obus.