仅调用文件中的另一个函数时如何具有 getopts 功能

仅调用文件中的另一个函数时如何具有 getopts 功能

我想为我的函数命名参数。

我似乎只能将 GETOPTS 用于从命令行调用的主函数。

如果我在一个文件中有多个函数,有什么方法可以在调用其他函数时获得相同类型的功能(命名参数)?

例如,以下似乎不起作用:

$ cat getops_example.sh 
function usage {
  echo 'here'
}

function my_test {
while getopts ":s:p:" o; do
    case "${o}" in
        s)
            s=${OPTARG}
            ((s == 45 || s == 90)) || usage
            ;;
        p)
            p=${OPTARG}
            ;;
        *)
            usage
            ;;
    esac
done
}
my_test 11 20
echo "s was $s"
echo "p was $p"
$

$ ./getops_example.sh -s 10 -p 20
s was 
p was 

答案1

您的程序无法运行,因为您将参数传递给程序,但在程序内部您调用函数my_test时没有选项标志-s-p相应的选项。根据您的实际需要,使用

my_test -s 11 -p 20

或从外部传递参数并调用您的函数

my_test "$@"

相关内容