Date: Thu, 28 Oct 2010 19:28:26 +0200 From: Polytropon <freebsd@edvax.de> To: Chip Camden <sterling@camdensoftware.com> Cc: FreeBSD Questions <freebsd-questions@freebsd.org> Subject: Re: [OT] writing filters in sh Message-ID: <20101028192826.d3211524.freebsd@edvax.de> In-Reply-To: <20101028161712.GC73337@libertas.local.camdensoftware.com> References: <20101027212841.GA67716@guilt.hydra> <20101028151148.GB73337@libertas.local.camdensoftware.com> <20101028160110.GA71713@guilt.hydra> <20101028161712.GC73337@libertas.local.camdensoftware.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On Thu, 28 Oct 2010 09:17:12 -0700, Chip Camden <sterling@camdensoftware.com> 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 The ; denotes a line break, means that you can use EITHER ; or a newline. In the original construct, if [ $# -ge 1 ]; then exec cat $@ | $0 exit fi you can change the ; into if [ $# -ge 1 ] then exec cat $@ | $0 exit fi which is often seen in scripts. In this case, no ; is required (or even allowed). The same rule applies for the while/do/done iterator. -- Polytropon Magdeburg, Germany Happy FreeBSD user since 4.0 Andra moi ennepe, Mousa, ...
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20101028192826.d3211524.freebsd>