Разница между stdin и файловым вводом данных в shell-скриптах заключается в источнике входных данных. 1
stdin — это стандартный поток ввода оболочки. 34 По умолчанию он ассоциирован с клавиатурой, то есть с тем, что пользователь набирает в терминале. 1 Многие команды bash принимают ввод из stdin, если в командной строке не указан файл, из которого надо брать данные. 34
Файловый ввод возможен, когда в сценариях используют символ перенаправления ввода — <. 34 В этом случае Linux заменяет дескриптор файла стандартного ввода на тот, который указан в команде. 34 Система читает файл и обрабатывает данные так, будто они введены с клавиатуры. 34
Таким образом, основное отличие в том, что при использовании stdin данные вводятся с клавиатуры, а при файловом вводе — из файла.