On Wed, 11 Dec 2002, dbrett wrote:

> Now I am really confused!
> 
> This works:
> #!/bin/bash
> 
> if [ -z $1 ]; then
>         echo ''
>         echo "format is $0 'math equation'"
>         echo "i.e. $0 (2+2)*3"
>         echo ''
>         exit
> fi
> 
> echo $1 | /usr/bin/bc -l

assuming that all you're doing is asking a shell script to run
"bc" for you, here's a possible solution:

-------------

#!/bin/bash

function usage {
        cat <<-EOF
        Usage: $0 equation.
        Aborting now.
        exit
        EOF
}

[[ $# -eq 1 ]] || usage

echo $1 | /usr/bin/bc -l 2> /dev/null

-------------

notes:

1) the usage() function keeps that stuff out of the way, so you can call
   it more than once

2) [[ $# -eq 1 ]]   is the recognized way to test the number of
   parameters


  and if all you're doing is simple arithmetic, this is already
built into bash with the $(( )) construct, as in:

$ echo $(((2+3)*10))
50

using this built-in construct, you need not worry about whitespace
since the construct is an inherent part of the shell.

rday



-- 
redhat-list mailing list
unsubscribe mailto:[EMAIL PROTECTED]?subject=unsubscribe
https://listman.redhat.com/mailman/listinfo/redhat-list

Reply via email to