$ ./test2.sh -h Usage: ./test2.sh [-a] [-b dir] item ... $ ./test2.sh -a -b bbb arg1 arg2 1 bbb test arg1 arg2 test arg1 arg2 $ ./test2.sh -b bbb arg1 arg2 bbb test arg1 arg2 test arg1 arg2
#!/bin/bash
usage_exit() {
echo "Usage: $0 [-a] [-b dir] item ..." 1>&2
exit 1
}
while getopts ab:h OPT
do
case $OPT in
a) FLAG_A=1
#test
echo $FLAG_A
;;
b) VALUE_D=$OPTARG
#test
echo $VALUE_D
;;
h) usage_exit
;;
esac
done
shift $((OPTIND - 1))
echo "test $*"
echo "test $@"
$ ./test3.sh -a aa -d bb -- arg1 arg2 bb test aa arg1 arg2 test aa arg1 arg2 test aa arg1 arg2
#!/bin/bash
args=`getopt ad: "$@"`
if [ $? != 0 ]; then
echo "Usage: $0 [-a] [-d dir]" 1>&2
exit 1
fi
set -- $args
for OPT in "$@"
do
case $OPT in
-a) A_FLAG=1
shift
#test
echo $FLAG_A
;;
-d) B_ARG=$2
shift 2
#test
echo $B_ARG
;;
--) shift
echo "test $*"
break
;;
esac
done
echo "test $*"
echo "test $@"
$ ./arg_test.sh -a aaaa -b bbbb -c -- arg1 arg2 test-a aaaa test-b bbbb test-c test arg1 arg2 $ ./arg_test.sh -a aaaa -b bbbb -c arg1 arg2 test-a aaaa test-b bbbb test-c test* arg1 test* arg1 test
#!/bin/bash
#arg_test.sh
#
#./arg_test.sh -a aaaa -b bbbb -c arg1 arg2
#./arg_test.sh -a aaaa -b -c arg1 arg2
#
#
PROGNAME=$(basename $0)
VERSION="1.0"
usage() {
echo "Usage: $PROGNAME [OPTIONS] FILE"
echo " This script is ~."
echo
echo "Options:"
echo " -h, --help"
echo " --version"
echo " -a, --long-a ARG"
echo " -b, --long-b [ARG]"
echo " -c, --long-c"
echo
exit 1
}
while [ "$#" -gt 0 ]
do
echo 'Debug $1' " = $1 : ALL ARG = $@"
case $1 in
-h | --help)
usage
exit 1
;;
--version)
echo $VERSION
exit 1
;;
-a | --long-a)
if [[ -z "$2" ]] || [[ "$2" =~ ^-+ ]]; then
echo "$PROGNAME: option requires an argument -- $1" 1>&2
exit 1
fi
ARG_A=$2
shift 2
#test
echo "test-a $ARG_A"
;;
-b | --long-b)
if [[ -z "$2" ]] || [[ "$2" =~ ^-+ ]]; then
shift
else
#test
echo "test-b $2"
shift 2
fi
;;
-c | --long-c)
shift 1
#test
echo "test-c "
;;
-- | -)
shift 1
param+=( "$@" )
break
;;
-*)
echo "$PROGNAME: illegal option -- '$(echo $1 | sed 's/^-*//')'" 1>&2
exit 1
;;
*)
if [[ ! -z "$1" ]] && [[ ! "$1" =~ ^-+ ]]; then
#param=( ${param[@]} "$1" )
param+=( "$1" )
shift 1
#test
echo "test* $param"
fi
;;
esac
done
#test
echo "test $*"
if [ -z "$param" ]; then
echo "$PROGNAME: too few arguments" 1>&2
echo "Try '$PROGNAME --help' for more information." 1>&2
exit 1
fi