Checking if a variable is a number in ksh
Being able to test if a variable is a number in the Korn shell is very useful but not immediately obvious….
Due to shell programming not using any kind of type checking you can sometimes end up not knowing if a variable is a number or a string. The script below will return TRUE or FALSE depending on the parameter passed to it.
#!/bin/ksh
#Stuart Brock 24.09.04
#
#Usage is isanum
# e.g. isanum 4 -> TRUE
# isanum Not4 -> FALSE
#Will echo TRUE or FALSE depending on parameter
#
#Name Date Change
#—- —- ——
#SGB 24.09.04 Created
#
#Notes:
expr $1 + 0 >/dev/null 2>&1
if [ $? -ne 0 ]
then
echo “FALSE”
else
echo “TRUE”
fi
The code above works by adding zero to the variable using “expr” then checking it’s exit status. If $1 is a character expr will produce an error (non zero exit status).
I use this in my scripts in situations like checking an entered parameter is a number e.g.
if [[ `isanum ${START}` = "TRUE" && `isanum ${END}` = "TRUE" ]]
then
head -${END} ${1}| tail +${START}
else
echo “Entered values invalid START: ${START} END: ${END}”
fi
The isanum script obviously needs to be included in your PATH for this to work.






Add New Comment
Viewing 1 Comment
Thanks. Your comment is awaiting approval by a moderator.
Do you already have an account? Log in and claim this comment.
Do you already have an account? Log in and claim this comment.
Add New Comment