On Sun, 26 Jun 2005, Peter Bako wrote:
> Ok, so this is not really an OpenBSD question but I am doing this on an
> OpenBSD system and I am about to lose my mind...
>
> I have done some basic shell scripting before but I've not had to deal with
> actual integer math before and now it is killing me. The script takes a
> parameter in (year number) and is supposed to subtract 1900 from it and then
> multiply the result by 365. (This is part of a larger script that deal with
> converting dates to a single numeric value, but this one problem is an
> example of the problems I am having with this entire script.) So, this is
> what I have:
>
> #!/bin/sh
> month=$1
> day=$2
> year=$3
>
> dayscount=$(expr ($year - 1900) * 365)
> echo $dayscount
> exit
>
> This will generate a "syntax error: `$year' unexpected" error. I have tried
> all sorts of variations and I am not getting it!!! HELP!!!
When using ksh, you can do:
#!/bin/ksh
month=$1
day=$2
year=$3
dayscount=$((($year - 1900) * 365))
echo $dayscount
exit
When using sh, you'll need expr(1), for which all parts of the
expression are separate arguments, and you need to escape all special
shell chars:
#!/bin/sh
month=$1
day=$2
year=$3
dayscount=`expr \( $year - 1900 \) \* 365`
echo $dayscount
exit
> BTW, obviously I need a good book on SH programming. Any suggestions?
For ksh, the Korn Shell Book by David Korn and (iirc Morris Bolsky)
comes to mind.
-Otto