bash getopts循环不迭代

问题描述 投票:0回答:1

我有一个简单的循环,我在很多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

无论我怎么称呼它,它只会到达“这里”。

bash loops getopts
1个回答
2
投票

修复,改变:

main

至:

main "$@"

"$@"是一个包含所有参数的数组。您需要将此数组传递给main函数。

© www.soinside.com 2019 - 2024. All rights reserved.