我对这个领域比较陌生,我正在运行名为" statsrandomrun.sh"的shell脚本。使用以下代码段:
#!/bin/bash
while getopts "m:s:xh" opt; do
case $opt in
m)
MU=$OPTARG; mflag=true; ;;
s)
SIGMA=$OPTARG; sflag=true; ;;
h)
usage; exit;;
x)
xflag=true ;;
\?)
echo "Invalid option: -$OPTARG" >&2
exit 1
;;
:)
echo "HaHa! Option -$OPTARG requires an argument." >&2
exit 1
;;
esac
done
但似乎每当我通过这个命令
/.statsrandomrun.sh -m
我从未见过
echo "HaHa! Option -$OPTARG requires an argument." >&2
工作,我在上面的代码片段中实现了。我的bash只是向我展示了一些其他消息:
option requires an argument -- m
我显然没有放入我的代码。还有另一行
Invalid option: -
我希望这会发生,因为help getopts
的输出包含以下内容:
如果找不到必需的参数,则getopts会发出一个':'进入NAME并将OPTARG设置为找到的选项字符。
发生了什么事?有任何想法吗? 我提前感谢任何帮助:)
答案 0 :(得分:2)
根据文档,add
,
getopts:getopts optstring name [arg]
OPTSTRING包含要识别的选项字母;如果一封信 后跟一个冒号,期望有一个参数, 白色空间应该与它分开。
getopts以两种方式之一报告错误。如果是第一个字符 OPTSTRING是一个冒号,getopts使用无提示错误报告。在 此模式下,不会打印任何错误消息。 ................ 如果一个 找不到必需的参数,getopts将':'放入NAME和 将OPTARG设置为找到的选项字符。如果没有getopts 静音模式,...........如果找不到必需的参数,'?' 放置在NAME中,取消设置OPTARG,并显示诊断消息 打印。
当我在非沉默模式中实现我的getopts功能时,=SUMPRODUCT((NOT(MOD(ROW($8:$22), 2))*D$8:D$22), (MOD(ROW($9:$23), 2)*D$9:D$23))
触发class Application extends React.Component{
render(){
return(
<div>
<button onClick={() => alert("hello world")}>Hello Application</button>
</div>
)
}
}
ReactDOM.render(<Application />,document.getElementById("tar"));
之后的这个缺失参数将存储在help getopts
中(在我的情况下) /.statsrandomrun.sh -m
内没有任何内容的?
}。
所以执行了这些代码行:
$Name
与{em>内置诊断 msg一起生成$opt
。
取而代之的是得到我想要的结果,我应该使用沉默模式,如
$OPTARG
在OPTSTRING中添加前面的冒号。