function readArgs() {
while getopts "i:o:p:s:l:m" OPTION; do
case "$OPTION" in
i)
input="$OPTARG"
;;
o)
output="$OPTARG"
;;
...
esac
done
}
readArgs
if [[ -z "$input" ]]; then
echo "Not set!"
fi
Run Code Online (Sandbox Code Playgroud)
这始终是给我Not set!,但如果我注释掉线function readArgs() {,}并且readArgs,它的工作原理.为什么?
也,
input="$OPTARG"
echo "$input"
;;
Run Code Online (Sandbox Code Playgroud)
不起作用.
Mat*_*Mat 16
getopts正在解析readArgs函数的参数,并且您没有给该函数任何参数.
试试:
readArgs "$@"
Run Code Online (Sandbox Code Playgroud)
getopts依赖于OPTIND被初始化为1 的变量
readArgs() { OPTIND=1; ...
Run Code Online (Sandbox Code Playgroud)
要么
readArgs() { local OPTIND; ...
Run Code Online (Sandbox Code Playgroud)