Это нормально. Стандартное использование инструментов unix - использование STDIN, если в качестве аргумента не указан входной файл. Попробуйте cat
, less
, grep
и т. Д. Вызывающий может предоставить ввод, если только
tool < /dev/null
Я настоятельно не советую пытаться определить, доступен ли «ввод», поскольку он будет вызывать проблемы независимо от того, как вы этого достигнете. В частности, избегайте -t
, поскольку проблематично подделать терминал при необходимости. Вместо этого положитесь на более традиционный интерфейс.
Если вы хотите, чтобы ваш инструмент не передавался, странно, что вы в первую очередь используете STDIN. Обычно можно использовать необязательный аргумент.
tool --foo file
tool --foo <( echo "" )
Другим вариантом будет запрос пользователя о том, что нет ввода.
tool --batch
Для того, чтобы помочь вам с проблемами дизайна вашего интерфейса, было бы действительно полезно знать, что делает ваш инструмент.