LINUX.ORG.RU

[bash] Как узнать, что с PIPE переданы данные?

 


0

0

Есть скрипт, эмулирующий работу ldapmodify, ldapadd, ldapsearch и пр. Этот скрипт должен принимать данные либо через параметры командной строки, либо через stdin. Но как скрипту узнать, что в него через PIPE или STDIN вливаются какие-то данные7 Т.е. я могу воспользоваться cat - или while read line; do но ведь если на входе на самом деле ничего нет, то скрипт просто подвиснет в ожидании ввода. Такая задача применима не только к ldap-клиентам, но и ко многим другим BASH-скриптам. Кажется, я её даже уже как-то решал, но только хоть убей, не помню КАК!

★★★★★

> Такая задача применима не только к ldap-клиентам, но и ко многим другим BASH-скриптам.

да ну!

параметры командной строки то тебе доступны. Если они (либо их отсутствие) предписывают читать с stdin то читай

dilmah ★★★★★
()

>while read line; do

У read есть timeout (во всяком случае в bash). Или можно посмотреть через /proc куда указывает дескриптор 0.

mky ★★★★★
()

>но ведь если на входе на самом деле ничего нет, то скрипт просто подвиснет в ожидании ввода

Ну да. Разве стандартные команды (тот же cat) ведут себя не так?

php-coder ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.