getopts命令似乎不适用于函数。也许我做错了什么。下面的代码就是我现在拥有的代码。如果我把整个while循环放在函数外面它是有效的。我想知道是否有办法使getopts与函数一起工作?我是shell脚本的新手。任何帮助将不胜感激:)
getOptions()
{
while getopts :al:f:vd opt; do
case "$opt" in
l) logFile = $OPTARG ;;
f) fileTable = $OPTARG ;;
v) verbose = 1 ;;
d) set -x ;;
a) echo "a";;
\?) echo "Invalid option: -$opt";;
esac
done
shift $(($OPTIND - 1))
}
答案 0 :(得分:3)
一个原因可能是您在使用logFile = $OPTARG
之类的内容时不应该使用logFile=$OPTARG
。
另一个原因是$ 1,$ 2等都是指函数的参数,而不是shell脚本的参数。由于shell以这种方式工作,并且getopts使用$ 1,$ 2等,你使用函数的getopts参数,而不是脚本的参数。换句话说,将选项处理限制在shell函数中并不是一个好主意。