yarkov
@yarkov
Помог ответ? Отметь решением.

Как понять работу getopt в bash?

Нашел пример работы с 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?
  • Вопрос задан
  • 716 просмотров
Решения вопроса 1
yarkov
@yarkov Автор вопроса
Помог ответ? Отметь решением.
Нашел косяк ))))
В строке
ARGS=$(getopt -o hvfd: --long help,verbose,file:,directory: -- "$@")

В hvfd: после f надо двоеточие поставить ))
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы