#!/bin/sh letters() { grepped=$(echo "$1" | grep -E "^[a-zA-Z]+$") [ "$1" = "$grepped" ] && return 0 || return 1 } empty() { if echo "$1" | grep -qE '^[[:space:]]+$'; then return 0 fi return 1 } digit() { grepped=$(echo "$1" | grep -E "^[0-9]$") [ "$1" = "$grepped" ] && return 0 || return 1 } number() { grepped=$(echo "$1" | grep -E "^[1-9][0-9]+$") [ "$1" = "$grepped" ] && return 0 || return 1 } alph() { grepped=$(echo "$1" | grep -E "^[a-zA-Z0-9]+$") [ "$1" = "$grepped" ] && return 0 || return 1 } while IFS='' read -r str; do if [ -z "$str" ]; then echo it is empty continue elif letters "$str"; then echo "it is a word" elif number "$str"; then echo "it is a number" elif digit "$str"; then echo "it is a digit" elif empty "$str"; then echo "it is empty" elif alph "$str"; then echo "it is an alphanum" else echo "it is too complicated" exit fi done