Yup, it appears that I have some howework to do! C Steve Holdoway wrote:
>man expect may simplify this task. However, be warned - people have >written books on expect alone! > >Steve > >On Tue, March 7, 2006 12:31 pm, chris bayley wrote: > > >>Hi team.... >> >>I have been whipping up a wee bash script to empty out the photos of my >>digital camera to my storage device. It runs from ivman when the camera >>is plugged in and the idea was to have as little user intervention as >>possible. It started off as a small bash script that was all right if >>you were watching on a terminal, but not robust enough to run >>unsupervised. >>I have come unstuck when trying to deal with CLI programs that expect an >>input on stdin but give me a question on std{out/err} that has no >>linefeed. >>I have found it very tricky indeed to read stdout when there is no LF. >> >>Here is some example code: >> >>#/bin/bash >> >># init some files and a pipe to play with >>touch file{1,2} >>mkfifo pipe1 >> >>catch_question() >>{ >># with this read loop I would like to read from stdin (the std{out,err} >>from cp) >># problem is with the 'file exists, overwrite (y|n)?' type questions a >>LF is often >># not sent in order the the user input occurs on the same line. >># hence 'read' seems unusable in this context ? >> while read LINE >> do >> # if I find something of concern then I will do my own UI for >>the question? >> if echo "$LINE"|egrep 'overwrite.+?' > /dev/null >> then >> if kdialog --yesno "$LINE" # your choice of UI here >> then >> # and copy a response to the pipe for the blocked cp >> echo "y" > pipe1 >> else >> echo "n" > pipe1 >> fi >> fi >> done >>} >> >># here I have a cp that complains of existing files >># stderr and stdout are combined and piped to 'catch_question' >># cp is expecting responses from the named pipe 'pipe1' >> >>cp -iv file1 file2 2>&1 < pipe1 | catch_question >> >>#clean up >>rm file1 file2 pipe1 >> >> >> >>So, if anyone has some ideas about how to read 'incomplete' lines from >>stdin or approaches to the task above I'd love some new ideas. >>Meanwhile I'm off to 'man expect' - I may be some time! >> >>: ) >>ChrisB >> >> >> > > > >