IINMシステムでエラーが発生した場合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.
この動作の内部を簡単に説明し、タスクを完了するための回避策を提案できますか?
ベストアンサー1
for i in {0..1000000}
どちらもfor i in $(seq 1000000)
大きなリストを作成してから繰り返します。これは非効率的で、多くのメモリを占有します。
使用:
for ((i = 0; i<= 1000000; i++))
代わりに。またはPOSIXとして:
i=0; while [ "$i" -le 1000000 ]; do
...
i=$(($i + 1))
done
または:
seq 1000000 | xargs...
CRLFでいっぱいのファイルを取得するには:
yes $'\r' | head -n 1000000 > file
通常、シェルではループをできるだけ避ける必要があります。