Bash script template

Times to time I need to create script with user friendly interface, for this usage with ARG0, ARG1... bad form. Here example how to use normal argument's like "script.sh -h"

#!/bin/bash -e

for i in "$@"
do
  case $i in
    -h|--help)
    cat <<'EOF'

-a --a-arg      - arg A '^[a-z]+$'

EOF
    exit 1
    shift
    ;;

    -a=*|--a-arg=*)
      CMD_arg="${i#*=}"
    shift
    ;;

    -b|--bool)
      CMD_bool=True
    shift
    ;;

    *)
    ;;
  esac
done

if [[ ! ${CMD_bool} ]]; then
  var_bool=False
else
  var_bool=${CMD_bool}
fi

if [[ ${CMD_arg} =~ ^[a-z]+$ ]]; then
  var_arg=${CMD_arg}
else
  echo "Wrong '-a' use '^[a-z]+$'"
  echo "Use -h|--help for help"
  exit 1
fi

echo "-a |${var_arg}|"
echo "-b |${var_bool}|"

exit 0

And how it's looks
[root@b398b ~]# ./bash.sh -h

-a --a-arg      - arg A '^[a-z]+$'

[root@b398b ~]# ./bash.sh -a
Wrong '-a' use '^[a-z]+$'
Use -h|--help for help
[root@b398b ~]# ./bash.sh -a=one
-a |one|
-b |False|
[root@b398b ~]# ./bash.sh -a=1
Wrong '-a' use '^[a-z]+$'
Use -h|--help for help
[root@b398b ~]# ./bash.sh -a=one -b
-a |one|
-b |True|

Comments

Popular posts from this blog

Redis with failover replication

FreeRadius and Google Workspace LDAP