I have a main script which writes to a named pipe. Before it starts writing, it starts two other scripts which read from this pipe. The reading and writing is a list of file names, one per line. How do I ensure that each script reads one complete line from the pipe at a time (no more, no less)? I have a test set up, and it usually works, but sometimes a reader will get a blank line or just a "/" (but not any other part of a line)! Kevin
Have you tried setting IFS ( field sep )? Also you could enable raw mode with -r. Can you share the script? Are the same lines failing repeatedly? Rob On 2014-03-01 11:55 AM, "Kevin McGregor" <kevin.a.mcgregor@gmail.com> wrote:
I have a main script which writes to a named pipe. Before it starts writing, it starts two other scripts which read from this pipe. The reading and writing is a list of file names, one per line. How do I ensure that each script reads one complete line from the pipe at a time (no more, no less)?
I have a test set up, and it usually works, but sometimes a reader will get a blank line or just a "/" (but not any other part of a line)!
Kevin
_______________________________________________ Roundtable mailing list Roundtable@muug.mb.ca http://www.muug.mb.ca/mailman/listinfo/roundtable
I tried fiddling with IFS to no avail. I just changed it like this: IFS=' ' And now the readers show all kinds of gibberish! All lines have no whitespace, save for the newline at the end. I'm assuming it's at the end. On Sat, Mar 1, 2014 at 12:47 PM, Robert Keizer <robert@keizer.ca> wrote:
Have you tried setting IFS ( field sep )? Also you could enable raw mode with -r.
Can you share the script?
Are the same lines failing repeatedly?
Rob On 2014-03-01 11:55 AM, "Kevin McGregor" <kevin.a.mcgregor@gmail.com> wrote:
I have a main script which writes to a named pipe. Before it starts writing, it starts two other scripts which read from this pipe. The reading and writing is a list of file names, one per line. How do I ensure that each script reads one complete line from the pipe at a time (no more, no less)?
I have a test set up, and it usually works, but sometimes a reader will get a blank line or just a "/" (but not any other part of a line)!
Kevin
_______________________________________________ Roundtable mailing list Roundtable@muug.mb.ca http://www.muug.mb.ca/mailman/listinfo/roundtable
_______________________________________________ Roundtable mailing list Roundtable@muug.mb.ca http://www.muug.mb.ca/mailman/listinfo/roundtable
The writer is: #/bin/ksh PIPE=/tmp/backup.pipe [[ ! -a $PIPE ]] && mkfifo $PIPE # Start gzip processes /opt/cronjobs/zip1 & /opt/cronjobs/zip2 & # Process files needing compression let 'fc=0' ls /zonebackup/*tar | while read F; do echo $F >$PIPE let 'fc=fc+1' done echo "end of list" >$PIPE echo "end of list" >$PIPE exit 0 The readers are: #/bin/ksh PIPE=/tmp/backup.pipe NAME=zip1 if [[ ! -a $PIPE ]]; then logger -p local0.warning "$NAME can't find $PIPE -- exiting" exit 1 fi while (( 1 )); do read F <$PIPE if [[ "$F" = "end of list" ]]; then break else echo "$NAME: $F" fi done On Sat, Mar 1, 2014 at 1:29 PM, Kevin McGregor <kevin.a.mcgregor@gmail.com>wrote:
I tried fiddling with IFS to no avail. I just changed it like this: IFS=' ' And now the readers show all kinds of gibberish! All lines have no whitespace, save for the newline at the end. I'm assuming it's at the end.
On Sat, Mar 1, 2014 at 12:47 PM, Robert Keizer <robert@keizer.ca> wrote:
Have you tried setting IFS ( field sep )? Also you could enable raw mode with -r.
Can you share the script?
Are the same lines failing repeatedly?
Rob On 2014-03-01 11:55 AM, "Kevin McGregor" <kevin.a.mcgregor@gmail.com> wrote:
I have a main script which writes to a named pipe. Before it starts writing, it starts two other scripts which read from this pipe. The reading and writing is a list of file names, one per line. How do I ensure that each script reads one complete line from the pipe at a time (no more, no less)?
I have a test set up, and it usually works, but sometimes a reader will get a blank line or just a "/" (but not any other part of a line)!
Kevin
_______________________________________________ Roundtable mailing list Roundtable@muug.mb.ca http://www.muug.mb.ca/mailman/listinfo/roundtable
_______________________________________________ Roundtable mailing list Roundtable@muug.mb.ca http://www.muug.mb.ca/mailman/listinfo/roundtable
participants (2)
-
Kevin McGregor -
Robert Keizer