我想为我的函数命名参数。
我似乎只能将 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 "$@"