Created
October 16, 2022 21:52
-
-
Save aakbar5/e2cf511c5844929afc849cf0fda46296 to your computer and use it in GitHub Desktop.
getopts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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 # | |
# $ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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