Home > Back-end >  Check parameters of script in bash
Check parameters of script in bash

Time:11-11

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

CodePudding user response:

#!/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

  • Related