On Thu, 28 Oct 2010 19:28:26 +0200, Polytropon <[email protected]> wrote:
> On Thu, 28 Oct 2010 09:17:12 -0700, Chip Camden <[email protected]> 
> wrote:
> > Perhaps someone with more sh fu can transform the
> > 'if' paragraph into a one-liner at least.  When I tried to do so, I got an
> > unexpected ; error.
> 
> Not tested, but this should do the trick:
> 
>       #!/bin/sh
>       if [ $# -ge 1 ] && ( exec cat $@ | $0; exit )
>       while read data; do echo $data; done

Attention - does NOT work! Maybe my sh fu is just shhh foo. :-)

        #!/bin/sh
        [ $# -ge 1 ] && ( exec cat $@ | $0; exit )
        while read data; do echo $data; done

THIS is better. You can see that "if" has been removed, leaving
a call to the program "test" (/bin/test is /bin/[), as long as
sh does not use a built-in test or [ mechanism. The "if" is not
neccessary here, as the if-then-fi construct is implicated by
the use of &&.

Tested. Works.




-- 
Polytropon
Magdeburg, Germany
Happy FreeBSD user since 4.0
Andra moi ennepe, Mousa, ...
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-questions
To unsubscribe, send any mail to "[email protected]"

Reply via email to