尝试让 getopts 调用函数

尝试让 getopts 调用函数

我试图让它调用一个函数。

这是我的代码

#!/bin/bash
while getopts ":a:b:" opt; do
    case $opt in 
        a)
            my_function "%e"
            ;;
        b)
            my_function "%s"
            ;;
       /?)
            echo "Invalid option: -$OPTARG"
            ;;
    esac
done

my_function() {
    option=$1
    //do something here
}

当我打电话时:./myscript.sh -a sshd

这将显示./myscript.sh: line 5: my_function: command not found

我应该做什么来修复它?

答案1

为了使 shell 脚本能够调用函数,必须在调用该函数之前定义该函数。您的代码中并非如此。

要修复此问题,请将函数移至命令行解析循环上方。

另外,我会让最后一个case测试*)捕获任何未处理的选项(/?永远不会匹配单个选项字符)。并且该getopts实用程序已经输出一条错误消息,因此您无需重复该消息($OPTARG可能也不是您此处使用的内容,但是$opt)。

相关内容