3 ms·
Try something like this (untested): #! /bin/sh fifo=/tmp/discover-vnc.fifo rm -f $fifo mkfifo $fifo dns-sd -B _rfb._tcp >$fifo & pid=$! while
by fensipens 12y ago
Try something like this (untested):
#! /bin/sh
fifo=/tmp/discover-vnc.fifo
rm -f $fifo
mkfifo $fifo
dns-sd -B _rfb._tcp >$fifo &
pid=$!
while read line; do
case $line in *_rfb._tcp.*)
# do something here.. then test
# if flag=3 and break otherwise
esac
done <$fifo
kill $pid
- pstadler 12y agoResults from dns-sd are not necessarily being delivered instantly and there might be no lines which contain this flag to check of it's the last entry. It's also rather ugly to create a named pipe for this purpose, don't you think?
- fensipens 12y agothere might be no lines which contain this flag Again, untested: #! /bin/sh timeout=5 fifo=/tmp/discover-vnc.fifo rm -f $fifo mkfifo $fifo dns-sd -B _rfb._tcp >$fifo & pid1=$! while read line; do case $line in *_rfb._tcp.*) # do something here.. then test # if flag=3 and break otherwise esac done <$fifo & pid2=$! sleep $timeout && kill $pid1 $pid2 & pid3=$! wait $pid2 kill $pid3 It's also rather ugly to create a named pipe for this purpose Because it creates a file in /tmp? Who cares? The alternative is bash voodoo magic.. the same magic that gave us shellshock.
- pstadler 12y agoThe alternative is bash voodoo magic.. the same magic that gave us shellshock. I love this one.