Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 9 Apr 2011 17:57:29 +0200
From:      Polytropon <freebsd@edvax.de>
To:        Dino Vliet <dino_vliet@yahoo.com>
Cc:        freebsd-questions@freebsd.org
Subject:   Re: shell programming question: help with expr command
Message-ID:  <20110409175729.357bbb91.freebsd@edvax.de>
In-Reply-To: <824253.34690.qm@web113616.mail.gq1.yahoo.com>
References:  <824253.34690.qm@web113616.mail.gq1.yahoo.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Sat, 9 Apr 2011 06:31:28 -0700 (PDT), Dino Vliet <dino_vliet@yahoo.com> =
wrote:
> Hi folks,
> I'm having trouble with a little shell script. Can somebody
> explain me why I get 3 times "expr: syntax=A0 error" in my
> console after I run this little script?
>=20
> #! /usr/local/bin/bash
> # testscript=20
>=20
> var1=3D"trees.J48" #other value will be rules.Jrip, rules.DecisionTable
> len=3D${#var1}
> ind=3D`expr index $var1 s`
> pos=3D`expr $len - $ind`
> out=3D`expr substr $var1 $ind $pos`=20
>=20
> I would expect (and want the following to happen):
>=20
> $ind should contain 6
> $pos should contain 3
> $out should contain J48 (other values will have to be Jrip,DecisionTable)
>=20
> Can anyone help me with this?

The explaination is quite simple: expr doesn't know "index"
or "substr"; see "man expr" for details.

A polite sidenote: Unless you have a good reason to code
in bash-specific manner, do NOT #!/usr/local/bin/bash, as
this is NOT portable (if this is one of your goals); use
the standard #!/bin/sh instead.

Depending on what you have in mind, maybe mentioning the
strengths of perl, sed and awk is worth being mentioned. :-)



--=20
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?20110409175729.357bbb91.freebsd>