Skip to content

Instantly share code, notes, and snippets.

@aakbar5
Created October 16, 2022 21:52
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save aakbar5/e2cf511c5844929afc849cf0fda46296 to your computer and use it in GitHub Desktop.
Save aakbar5/e2cf511c5844929afc849cf0fda46296 to your computer and use it in GitHub Desktop.
getopts
# Script is interested to take
# - a flag
# - an option which takes a parameter
arg_list=$(getopt -o bp: --long boolean,param: -- "$@")
eval set -- "$arg_list"
while [ $# -gt 0 ] ; do
case "$1" in
-b | --boolean)
echo "Parameter @ flag"
shift
;;
-p | --param)
arg=${2}
echo "Parameter @ parameter # ${arg}"
shift 2
;;
--)
shift
break
;;
esac
done
#!/bin/bash
# Script is interested to take
# - a flag
# - an option which takes a parameter
arg_list="bp:"
echo "Number of arguments: $#"
# Parse passed parameters
while getopts ${arg_list} arg; do
case ${arg} in
b)
echo "Parameter (${OPTIND}) @ flag"
;;
p)
param=${OPTARG}
echo "Parameter (${OPTIND}) @ parameter # ${param}"
;;
:)
echo "Error! option # ${OPTARG} needs an argument"
;;
*)
echo "Error! unknown option # ${OPTARG}"
;;
esac
done
# Output
# $ ./test2.sh
# Number of arguments: 0
# $ ./test2.sh -b
# Number of arguments: 1
# Parameter (2) @ flag
# $ ./test2.sh -b -p test
# Number of arguments: 3
# Parameter (2) @ flag
# Parameter (4) @ parameter # test
# $ ./test2.sh -b -p
# Number of arguments: 2
# Parameter (2) @ flag
# ./test2.sh: option requires an argument -- p
# Error! unknown option #
# $ ./test2.sh -b -q
# Number of arguments: 2
# Parameter (2) @ flag
# ./test2.sh: illegal option -- q
# Error! unknown option #
# $
#!/bin/bash
# Script is interested to take
# - a flag
# - an option which takes a parameter
arg_list=":bp:"
echo "Number of arguments: $#"
# Parse each
while getopts ${arg_list} arg; do
case ${arg} in
b)
echo "Parameter (${OPTIND}) @ flag"
;;
p)
param=${OPTARG}
echo "Parameter (${OPTIND}) @ parameter # ${param}"
;;
:)
echo "Error! option # ${OPTARG} needs an argument"
;;
*)
echo "Error! unknown option # ${OPTARG}"
;;
esac
done
# Output
# $ ./test1.sh
# Number of arguments: 0
# $ ./test1.sh -b
# Number of arguments: 1
# Parameter (2) @ flag
# $ ./test1.sh -b -p test
# Number of arguments: 3
# Parameter (2) @ flag
# Parameter (4) @ parameter # test
# $ ./test1.sh -b -p
# Number of arguments: 2
# Parameter (2) @ flag
# Error! option # p needs an argument
# $ ./test1.sh -b -q
# Number of arguments: 2
# Parameter (2) @ flag
# Error! unknown option # q
# $
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment