"diff: /dev/fd/1022: Too many open files"
diff <(cmd1) <(cmd2)
みたいなdiff呼び出しをループの中でやっていたら、表題のエラーが出ました。どうやら、diffでプロセス置換を使うと、diffコマンドを呼び出すたびにファイルディスクリプタを新規作成してしまうみたいで、1プロセスあたりのファイルディスクリプタ使用数の上限に達してしまったのではないかと推測されます。
解決方法
diffで比較するのをやめて、普通に文字列比較するようにしたら解決しました。if [ $(cmd1) == $(cmd2) ] ; then
echo ok
else
echo ng
fi
カテゴリ: