Нашел пример работы с
getopt и немного допилил для примера:
#!/bin/bash
ARGS=$(getopt -o hvfd: --long help,verbose,file:,directory: -- "$@")
if [ $? != 0 ] ; then
echo "Terminating..." >&2;
exit 1;
fi
eval set -- "$ARGS"
HELP=false
VERBOSE=false
FILE=
DIRECTORY=
while true; do
case "$1" in
-h | --help ) HELP=true; shift ;;
-v | --verbose ) VERBOSE=true; shift ;;
-f | --file ) FILE="$2"; shift 2 ;;
-d | --directory ) DIRECTORY="$2"; shift 2 ;;
-- ) shift; break ;;
* ) break ;;
esac
done
if [ ${HELP} ]; then
echo "ARG: \${HELP}=${HELP}"
fi
if [ ${VERBOSE} ]; then
echo "ARG: \${VERBOSE}=${VERBOSE}"
fi
if [ ${FILE} ]; then
echo "ARG: \${FILE}=${FILE}"
fi
if [ ${DIRECTORY} ]; then
echo "ARG: \${DIRECTORY}=${DIRECTORY}"
fi
Запуск:
$ ./argtest.sh -hv -f /tmp/lock -d ~/bin
Результат:
ARG: ${HELP}=true
ARG: ${VERBOSE}=true
ARG: ${FILE}=-d
Вопрос: WTF?