Search code examples
bashparameters

Check parameters of script in bash


I wanna write a script which check variables of this script. I have tried some, but it isn't working. The idea is:

  1. If on of the parameters is a number, print that it is number
  2. If on of the parameters is a character, print that it is character
  3. If 'man parameter' is executable, print that it is might be a function

Script I have tried:

#!/bin/bash

echo Hello $LOGNAME'!'

test $# -eq 0 && echo 'Try again, no parameters were entered' || echo 'Num of parameters is '$#

re='^[0-9]+$'
for i in $*
do
if ![["$i" =~ $re]];then
        echo 'Parameter '$i' is alphabetical'
else
        if  [["$i" =~ $re]];then
                echo 'Parameter '$i' is digital'
        else
                if  [ $i];then
                        echo $i' might be a function. Try to use man of --help'
                fi
        fi
fi
done

Solution

  • #!/bin/bash
    echo "Hello ${LOGNAME}!"
    
    [ "$#" -eq 0 ] && { echo 'Try again, no parameters were entered'; exit 1; } 
    echo 'Num of parameters is '$#
    
    re='^[0-9]+$'
    for i in "$@"
    do
    if ! [[ "$i" =~ $re ]];then
            echo "Parameter '$i' is alphabetical"
            man "$i" > /dev/null 2> /dev/null
            if  [ "$?" -eq 0 ];then
                 echo "$i might be a function. Try to use man of --help"
            fi
    else
        echo "Parameter '$i' is digital"
    fi
    done;
    

    When you write a test you need spaces around your brackets. You can easily find and fix those bugs if you use shellcheck