我试图让它调用一个函数。
这是我的代码
#!/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
)。