Как я могу проверить, был ли передан пустой именованный параметр в bash? - PullRequest
0 голосов
/ 03 июня 2018

Так что я хочу иметь возможность использовать опцию -h, чтобы показать подробности справки.У меня есть:

while getopts ":h:d:n" opt; do
  case $opt in
    h) help="true" >&2
    ;;
    d) vdir="$OPTARG"
    ;;
    n) vname="$OPTARG"
    ;;
    \?) echo "Error: Invalid option -$OPTARG" >&2
        echo "Please use -h for more information"
        exit 1
    ;;
  esac
done

# If -h was used, display help and exit
if [ "$help" = "true" ]; then
  echo "Help details"
fi

Когда я передаю детали для -d или -n (например, программа -d / var / test /), они получают их нормально.Однако, когда я делаю что-то вроде программы -h, это не работает.

Я также пытался отобразить строку, когда я делаю опцию h) в операторе case, однако это не отражается.Кажется, что когда я делаю -h, это не работает, я должен также отправить значение (например, program -h "test"), и он сделает то, что требуется.

Если я сделаю что-то вродеПрограмма -p показывает сообщение об ошибке, как требуется, -h просто ничего не делает.

1 Ответ

0 голосов
/ 03 июня 2018

Согласно комментариям, -h не имеет значения, поэтому не должно иметь: после него, поэтому строка должна быть:

while getopts "hd:n:" opt; do

Удаление начального: приведет к ошибкам.Наличие no: после h будет означать, что ему не нужно значение, в то время как: after d и n означает, что им нужно значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...