Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 为什么';getopts';在一个函数中,是否发生故障?_Bash_Ubuntu - Fatal编程技术网

Bash 为什么';getopts';在一个函数中,是否发生故障?

Bash 为什么';getopts';在一个函数中,是否发生故障?,bash,ubuntu,Bash,Ubuntu,这总是给我未设置但是如果我注释掉函数readArgs(){,}和readArgs,它会工作。为什么? 而且 不起作用。getopts正在解析readArgs函数的参数,而您没有给该函数任何参数 尝试: input="$OPTARG" echo "$input" ;; getopts依赖于将OPTIND变量初始化为1。或者 readArgs "$@" 或 这仅在函数有多个调用时才有必要。OP没有描述函数的容器。对于我在.bashrc中编写的函数,我使用这些方法。尽管这个答案没有直接回答OPs问

这总是给我
未设置
但是如果我注释掉
函数readArgs(){
}
readArgs
,它会工作。为什么?

而且


不起作用。

getopts
正在解析
readArgs
函数的参数,而您没有给该函数任何参数

尝试:

input="$OPTARG"
echo "$input"
;;

getopts
依赖于将
OPTIND
变量初始化为1。或者

readArgs "$@"


这仅在函数有多个调用时才有必要。OP没有描述函数的容器。对于我在.bashrc中编写的函数,我使用这些方法。尽管这个答案没有直接回答OPs问题,但它确实会在搜索getopts在函数中不起作用的原因时出现,并且在调试代码时非常有用(同样适用于.bashrc中的函数)
readArgs "$@"
readArgs() { OPTIND=1; ...
readArgs() { local OPTIND; ...