我试图在交换机案例循环中使用getopts。 如果我只使用getopts或只使用开关盒,那么当我将这两个组合时,不会触发getopts。
我已经搜索了很多,但是我对猫鳍有任何提及如何将它们组合起来,问题我错过了一些愚蠢的东西所以给我...
这是代码本质。
#!/bin/bash
case $1 in
ver)
echo "vesion"
exit 0
;;
op)
while getopts ":a" opt; do
case $opt in
a)
echo "-a was triggered!" >&2
;;
\?)
echo "Invalid option: -$OPTARG" >&2
;;
esac
done
;;
esac
当我这样做时
# bash -x test.sh op -a
我得到了
+ case $1 in
+ getopts :a opt
(没有调试我什么也没得到)
我错过了将这两个结合起来的内容
谢谢:)
答案 0 :(得分:2)
在调用HMM
之前,您应该在shift
选项的开头添加op)
指令,以便使用getopts
参数本身。否则,op
将分析的第一个参数是getopts
,它将默默地停止(选项结束)。