Complex quoting task in tcsh

Rob listone at deathbeforedecaf.net
Tue Dec 30 18:26:00 PST 2003


On Wednesday 31 December 2003, Daniela <dgw at liwest.at> wrote:

> On Monday 29 December 2003 05:06, Rob wrote:
> > Daniela,
> >
> > This isn't the answer you would like, but tcsh is generally
considered a
> > bad language for writing scripts*. It's an excellent command-line
shell,
> > but scripts are not its strong point.
> >
> > One reason is the one you've just run into - quoting is a little
flakey,
> > especially when you try to do something tricky.
> >
> > For 'basic' scripts, either sh(1) or ksh(1) is usually the way to
go. As
> > an example, here's your line-checking question, using sh and FreeBSD
> > commands:
> >
> >     cat somefile | while read LINE ; do
> >         if echo "$LINE" | grep -q '^#' ; then
> >             # do something with $LINE
> >         fi
> >     done
>
> Thanks a lot, that grep -q thing also works for tcsh.
>

Excellent!

>
> > For more complex work, perl or python are usually recommended.
>
> You can do lots of stuff with shellscript: look at
user.berklix.org/~dgw
>

Absolutely - the whole /etc/rc structure for example. I guess what I
meant by 'complex' was string matching & manipulation. If I'm writing a
shell script that uses awk and sed to chop things up, it starts to get
clumsy and hard to read. At that point I'll usually turn it into a perl
script.

>
> > On the other hand, if you just want to filter the comments out of a
> > file, put
> >
> >     grep -v '^#'
> >
> > at the start of your pipeline.
> >
> > * Csh Programming Considered Harmful (1996)
> >   http://www.perl.com/pub/a/language/versus/csh.html
>
> Csh is not harmful at all -- it allows for great optimizing for
certain tasks.
>



More information about the freebsd-questions mailing list