Последний канал усекает файл, который читает первый канал, прежде чем что-либо действительно произойдет.Так что cat
пытается прочитать файл, который вызов head
немедленно усекает.Это является причиной проблем здесь;оператор >
является оператором оболочки, что означает «обрезать этот файл сразу, а затем сделать так, чтобы процесс записал его стандартный вывод в файл.
В связанной заметке вам не нужно cat
здесь.
Попробуйте вместо этого:
TMP="$$.FILE"
sort <"$TMP" | head > "$TMP.tmp"
mv "$TMP.tmp" "$TMP"