問題
wsl2のwhileループの中でWindowsのコマンド(.exe)を実行すると表示が崩れる。
$ seq 10 | while read i; do ipconfig.exe &>/dev/null; echo $i; done
1
期待した結果が得られない。
ipconfig.exe以外の.exeのコマンドでも同様。
wsl1ではこの問題は発生しない。
原因
(恐らく).exeが標準入力を拾っている。
解決策
.exe に</dev/nullを付ける。
ipconfig.exe </dev/null
$ seq 10 | while read i; do ipconfig.exe </dev/null &>/dev/null; echo $i; done
1
2
3
4
5
6
7
8
9
10