Shell parameter definition

Based on the very limited information and examples supplied by the O/P, I deduce that your two parameters are numbers between 0.1 and 0.9 inclusive.

We could treat each parameter as a string and test for all possible valid values.

ABCDJ="$1"
GHIJJ="$2"
#
case "${ABCDJ}" in
        "0.1"|"0.2"|"0.3"|"0.4"|"0.5"|"0.6"|"0.7"|"0.8"|"0.9")
                :       # Do nothing
                ;;
        *)
                echo -e "Option limit should be positive number and less than 1. Program aborts!"
                exit 1
                ;;
esac
#
case "${GHIJJ}" in
        "0.1"|"0.2"|"0.3"|"0.4"|"0.5"|"0.6"|"0.7"|"0.8"|"0.9")
                :       # Do nothing
                ;;
        *)
                echo -e "Option limit should be positive number and less than 1. Program aborts!"
                exit 1
                ;;
esac
#
echo -e "Valid parameters supplied ${ABCDJ} ${GHIJJ}"
1 Like

For any other shell you can use the bc as below.

ABCDJ=0.5 |bc
GHIJJ=0.75 |bc
if [[ ${ABCDJ} -le 0 || ${GHIJJ} -ge 1 ]]; then
echo hello
fi

-Pank's

1 Like

Hey Pankaj,

Great man. Thanks. The program is running. Will keep you posted with the output.

Another question is, as above if the values are 0.5 and 0.75, piping it to bc will still keep the decimals or will it round it to the number before the decimal?

Thanks in advance.

---------- Post updated at 03:03 PM ---------- Previous update was at 09:19 AM ----------

I just hit with some errors

Saying cat and sed commands couldn't be found.

My header was #!/bin/sh

But now I changed it to #!/bin/bash, the program is running fine and I have to look into it.

Hi, just use

#!/bin/ksh

on the first line and it should work. If not, type

which ksh

and it should tell you the path to ksh, if it is installed on your Fedora Linux system.

1 Like

@pankage_tarale

Sorry, but this script does not work at all:

ABCDJ=0.5 |bc
GHIJJ=0.75 |bc
echo "1 Value of ABCDJ: ${ABCDJ}"
echo "2 Value of GHIJJ: ${GHIJJ}"
if [[ ${ABCDJ} -le 0 || ${GHIJJ} -ge 1 ]]; then
echo hello
fi
echo "3 Value of ABCDJ: ${ABCDJ}"
echo "4 Value of GHIJJ: ${GHIJJ}"

./scriptname
1 Value of ABCDJ: 
2 Value of GHIJJ: 
hello
3 Value of ABCDJ: 
4 Value of GHIJJ:

@jacobs.smith
Please post the exact and precise (to the last decimal place) range of the parameter or parameters you are trying to validate. The Shell normally deals with integers ... but there is always another way. I think that my post is the only one which works so far. The awk and perl programmers have kept quiet so far ... perhaps because we are all having difficulty visualising your computer.
Do you have any computer programming languages available on your computer - expecially any in which you have expertise?

1 Like

Hey Methyl,

That was so nice of you in taking time to write a detailed message.

It is an already being used shell script (program.sh) on my GNU Linux server.

The program was developed by another person that accepted only whole numbers(1,2, 3, 4, .....) but not decimals.

I just added the " | bc " to my program and it works now.

Earlier before, the first line in my code used to be #!/bin/sh and it gave me some errors saying cat and sed commands couldn't be found.

But, now I changed it to #!/bin/bash and the program is running without my earlier "arithmetic errors". I will let this post know how my output or errors are headed to.

Thanks to all of you.

Did you try changing to

#!/bin/ksh

as well?

I think that this will be post #28 on what should be a 2-post question.
@jacobs.smith
Why can you not post the precise range and precision of the variables which you are trying to validate?

Hmm:

It doesn't.