181 lines
4.8 KiB
Bash
Executable File
181 lines
4.8 KiB
Bash
Executable File
#!/bin/ksh
|
|
#
|
|
# SCRIPT: test_string.ksh
|
|
# AUTHOR: Randy Michael
|
|
# REV: 1.0.D - Used for developement
|
|
# DATE: 10/15/2007
|
|
# PLATFORM: Not Platform Dependent
|
|
#
|
|
# PURPOSE: This script is used to test a character
|
|
# string, or variable, for its composition.
|
|
# Examples include numeric, lowercase or uppercase
|
|
# characters, alpha-numeric characters, and IP address.
|
|
#
|
|
# REV LIST:
|
|
#
|
|
#
|
|
# set -x # Uncomment to debug this script
|
|
# set -n # Uncomment to verify syntax without any execution.
|
|
# # REMEMBER: Put the comment back or the script will
|
|
# # NOT EXECUTE!
|
|
#
|
|
####################################################
|
|
############## DEFINE FUNCTIONS HERE ###############
|
|
####################################################
|
|
|
|
test_string ()
|
|
{
|
|
# This function tests a character string
|
|
|
|
# Must have one argument ($1)
|
|
|
|
if (( $# != 1 ))
|
|
then
|
|
# This error would be a programming error
|
|
|
|
print "ERROR: $(basename $0) requires one argument"
|
|
return 1
|
|
fi
|
|
# Assign arg1 to the variable --> STRING
|
|
|
|
STRING=$1
|
|
|
|
# This is where the string test begins
|
|
|
|
|
|
|
|
case $STRING in
|
|
|
|
+([0-9]).+([0-9]).+([0-9]).+([0-9]))
|
|
# Testing for an IP address - valid and invalid
|
|
INVALID=FALSE
|
|
|
|
# Separate the integer portions of the "IP" address
|
|
# and test to ensure that nothing is greater than 255
|
|
# or it is an invalid IP address.
|
|
|
|
for i in $(echo $STRING | awk -F . '{print $1, $2, $3, $4}')
|
|
do
|
|
if (( i > 255 ))
|
|
then
|
|
INVALID=TRUE
|
|
fi
|
|
done
|
|
|
|
case $INVALID in
|
|
TRUE) print 'INVALID_IP_ADDRESS'
|
|
;;
|
|
FALSE) print 'VALID_IP_ADDRESS'
|
|
;;
|
|
esac
|
|
;;
|
|
+([0-1])) # Testing for 0-1 only
|
|
print 'BINARY_OR_POSITIVE_INTEGER'
|
|
;;
|
|
+([0-7])) # Testing for 0-7 only
|
|
print 'OCTAL_OR_POSITIVE_INTEGER'
|
|
;;
|
|
+([0-9])) # Check for an integer
|
|
print 'INTEGER'
|
|
;;
|
|
+([-0-9])) # Check for a negative whole number
|
|
print 'NEGATIVE_WHOLE_NUMBER'
|
|
;;
|
|
+([0-9]|[.][0-9]))
|
|
# Check for a positive floating point number
|
|
print 'POSITIVE_FLOATING_POINT'
|
|
;;
|
|
+(+[0-9][.][0-9]))
|
|
# Check for a positive floating point number
|
|
# with a + prefix
|
|
print 'POSITIVE_FLOATING_POINT'
|
|
;;
|
|
+(-[0-9][.][0-9]))
|
|
# Check for a negative floating point number
|
|
print 'NEGATIVE_FLOATING_POINT'
|
|
;;
|
|
+([-.0-9]))
|
|
# Check for a negative floating point number
|
|
print 'NEGATIVE_FLOATING_POINT'
|
|
;;
|
|
+([+.0-9]))
|
|
# Check for a positive floating point number
|
|
print 'POSITIVE_FLOATING_POINT'
|
|
;;
|
|
+([a-f])) # Test for hexidecimal or all lowercase characters
|
|
print 'HEXIDECIMAL_OR_ALL_LOWERCASE'
|
|
;;
|
|
+([a-f]|[0-9])) # Test for hexidecimal or all lowercase characters
|
|
print 'HEXIDECIMAL_OR_ALL_LOWERCASE_ALPHANUMERIC'
|
|
;;
|
|
+([A-F])) # Test for hexidecimal or all uppercase characters
|
|
print 'HEXIDECIMAL_OR_ALL_UPPERCASE'
|
|
;;
|
|
+([A-F]|[0-9])) # Test for hexidecimal or all uppercase characters
|
|
print 'HEXIDECIMAL_OR_ALL_UPPERCASE_ALPHANUMERIC'
|
|
;;
|
|
+([a-f]|[A-F]))
|
|
# Testing for hexidecimal or mixed-case characters
|
|
print 'HEXIDECIMAL_OR_MIXED_CASE'
|
|
;;
|
|
+([a-f]|[A-F]|[0-9]))
|
|
# Testing for hexidecimal/alpha-numeric strings only
|
|
print 'HEXIDECIMAL_OR_MIXED_CASE_ALPHANUMERIC'
|
|
;;
|
|
+([a-z])) # Testing for all lowercase characters only
|
|
print 'ALL_LOWERCASE'
|
|
;;
|
|
+([A-Z])) # Testing for all uppercase numbers only
|
|
print 'ALL_UPPERCASE'
|
|
;;
|
|
+([a-z]|[A-Z]))
|
|
# Testing for mixed case alpha strings only
|
|
print 'MIXED_CASE'
|
|
;;
|
|
+([a-z]|[A-Z]|[0-9]))
|
|
# Testing for any alpha-numeric string only
|
|
print 'ALPHA-NUMERIC'
|
|
;;
|
|
*) # None of the tests matched the string coposition
|
|
print 'INVALID_STRING_COMPOSITION'
|
|
;;
|
|
esac
|
|
}
|
|
|
|
####################################################
|
|
|
|
usage ()
|
|
{
|
|
echo "\nERROR: Please supply one character string or variable\n"
|
|
echo "USAGE: $THIS_SCRIPT {character string or variable}\n"
|
|
}
|
|
|
|
####################################################
|
|
############# BEGINNING OF MAIN ####################
|
|
####################################################
|
|
|
|
# Query the system for the name of this shell script.
|
|
# This is used for the "usage" function.
|
|
|
|
THIS_SCRIPT=$(basename $0)
|
|
|
|
# Check for exactly one command-line argument
|
|
|
|
if (( $# != 1 ))
|
|
then
|
|
usage
|
|
exit 1
|
|
fi
|
|
|
|
# Everything looks okay if we got here. Assign the
|
|
# single command-line argument to the variable "STRING"
|
|
|
|
STRING=$1
|
|
|
|
# Call the "test_string" function to test the composition
|
|
# of the character string stored in the $STRING variable.
|
|
|
|
test_string $STRING
|
|
|
|
# End of script
|