我想getopts
在我的.bash_profile中定义的函数内部使用.我的想法是,我想将一些标志传递给此函数以改变其行为.
这是代码:
function t() {
echo $*
getopts "a:" OPTION
echo $OPTION
echo $OPTARG
}
Run Code Online (Sandbox Code Playgroud)
当我这样调用它时:
t -a bc
Run Code Online (Sandbox Code Playgroud)
我得到这个输出:
-a bc
?
Run Code Online (Sandbox Code Playgroud)
怎么了?我想在bc
没有手动移位和解析的情况下获得该值.如何getopts
在函数内正确使用?
编辑:纠正我的代码片段尝试$ OPTARG,无济于事
编辑#2:好的事实证明代码没问题,我的shell被搞砸了.打开一个新窗口解决了它.arg值确实在$ OPTARG中.
为什么此选项仅在第一次使用时有效,然后每隔一次就被忽略?就像不使用该选项时正在重置一样。
这是我的功能:
testopts() {
local var="o false"
while getopts "o" option; do
case "${option}" in
o)
var="o true"
;;
esac
done
echo $var
}
Run Code Online (Sandbox Code Playgroud)
运行它时,它仅在第一次传递选项时返回 true。
Run Code Online (Sandbox Code Playgroud)$ testopts o false $ testopts -o o true $ testopts -o o false