цикл bash getopts не повторяется

#bash #loops #getopts

#bash #циклы #getopts

Вопрос:

У меня есть простой цикл, который я использую во многих своих скриптах bash, но этот конкретный, похоже, не работает.

 #!/bin/bash
function main
{
    echo here
    while getopts "Ah" cli_opt; do
      case ${cli_opt} in
        A)
            echo "op A"
            start_all
            return $?
        ;;
        *)
            echo invalid option
            showHep
            exit 1
        ;;
        h)
            showHelp
            exit 0
        ;;
        ?)
            invalid option
            showHelp
            exit 1
        ;;
        :)
            option -$OPTARG requires an argument
            showHelp
            exit 1
         ;;
      esac
    done
}

main
exit 0
  

Независимо от того, как я это называю, он достигает только «здесь».

Комментарии:

1. измените main на main «$@»

Ответ №1:

Исправление, изменение:

 main
  

Для:

 main "$@"
  

"$@" представляет собой массив, содержащий все аргументы. Вам нужно будет передать этот массив в вашу main функцию.