Первое поле должно включать тип монтирования и имя корзины, например,
s3fs#mybucket /path/to/mountpoint fuse _netdev,allow_other 0 0
У s3fs README есть другие примеры.
Если я правильно понял вопрос, вы можете попробовать следующее:
#!/bin/sh
if [ -t 0 ]; then
echo running interactivelly
else
while read -r line ; do
echo $line
done
fi
Вы можете легко реализовать поведение, аналогичное команде «cat», которая читается из списка предоставленных файлов или, если они не предоставлены, затем считывается из стандартного ввода.
Хотя вы можете не использовать эту идею, я думаю, что эта статья в Linux Journal будет вам интересна http://www.linuxjournal.com/content/determine-if-shell-input-coming-terminal-or -трубопровод
: -)
Чтобы ответить на вопрос буквально (но не то, что вы на самом деле хотите): read -t 0
Таймаут, 0 секунд.
-t 5
, но на трэшевой системе даже это проблематично. read -t
не стандартизован в SUSv3. Он есть в BSD sh, bash, zsh. Его нет в ksh или dash. Так что вы не можете просто использовать #!/bin/sh и ожидать, что это будет работать.
Основная проблема в том, что даже если сейчас на stdin ничего нет, это не значит, что скоро не будет. Вызов программы обычно оставляет stdin подключенным к терминалу/что угодно, так что нет способа сказать, что нужно.
Итак, чтобы ответить на ваш вопрос буквально, вы можете это сделать, но на практике ваши варианты таковы:
[ -t 0 ]
Если вы никогда не хотите запускать сценарий в интерактивном режиме, пусть он принимает входной файл в качестве параметра, а не использует stdin
. Некоторые программы используют флаг или специальное имя файла, чтобы указать, что они должны принимать ввод из стандартного ввода, а не из файла; этот случай позволяет при необходимости справиться с подменой командной строки.
Если вы хотите, чтобы ваш скрипт принимал стандартный ввод, почему бы вам не сделать его интерактивным (или, по крайней мере, вести себя как другие инструменты POSIX)?