IINM 我的系统在ing时出现故障bash
for i in {0..10000000}; # Seven zeroes.
do
false;
done # `bash` exited and its `tmux` pane/window was closed.
或者
for i in $(seq 0 10000000); # Seven zeroes.
do
false;
done # `bash` exited and its `tmux` pane/window was closed.
但不是什么时候
for i in {0..1000000}; # Six zeroes.
do
false;
done # Finished correctly.
您能否简要解释一下此行为的内部原理并提示完成任务的解决方法?
for i in {0..1000000}
并且for i in $(seq 1000000)
都建立了一个大列表,然后循环遍历它。那是低效的并且使用了大量内存。
用:
for ((i = 0; i<= 1000000; i++))
反而。或者POSIXly:
i=0; while [ "$i" -le 1000000 ]; do
...
i=$(($i + 1))
done
或者:
seq 1000000 | xargs...
要获取一个充满 CRLF 的文件:
yes $'\r' | head -n 1000000 > file
通常,在 shell 中应尽可能避免循环。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句