当我使用'while getopts d:n:OPTION'时 - 我如何知道我只有无效的选项,如果是,那么它后面有一个参数?getopts in bash programming
0
A
回答
4
你知道你有一个无效的选项,因为返回值是'?'。
或者:
- 你不能告诉它是否发生了争执,因为该选项是无效的。
或者:
- 你要看看接下来的参数,看它是否以短划线开头。
'或'选项中的启发式是不完美的。随着期权捆绑,我可以这样写:
command -xbf/fidget
- 如果getopts的选项字符串为
'xf:'
,那么,“B”是无效的选项。 - 如果getopts选项字符串是
'xbf:'
,那么在有效选项'b'后面会出现选项'f'和选项参数'/ fidget'。 - 如果getopts选项字符串是
'xb:f:
',那么'b'的选项参数将是'f/fidget'。
我认为这种“任一”的态度是正确的 - 你不能说。从所谓的“rcsunco”命令
代码片段 - 取消RCS检出(和在写的时候我被勉强动过SCCS):
remove=yes
keep=no
get=no
quiet=
while getopts gknqrV opt
do
case $opt in
V) echo "`basename $0 .sh`: RCSUNCO Version $Revision: 2.1 $ ($Date: 2002/08/03 07:41:00 $)" |
rcsmunger
exit 0;;
g) get=yes;;
k) keep=yes;;
n) remove=no;;
q) quiet=-q;;
r) remove=yes;;
*) echo "Usage: `basename $0 .sh` [-{n|g}][-{r|k}] file [...]" 1>&2
exit 1;;
esac
done
shift $(($OPTIND-1))
这些天,我已经采用“平衡的括号”中的“情况”符号:
(q) quiet=-q;;
另外请注意,我没有明确测试返回哪个选项 - 我让包罗万象“*”的情况下成交。我还观察到使用信息不完整(没有'-V'或'-q'记录),并且代码已经足够老,所以我没有添加'-h'帮助选项。脚本'rcsmunger'用'2.1
'代替'$Revision 2.1 $
',更像是SCCS用'2.1'替换'%I%'的方式。
0
的选项无效会有一个问号?...的命令行参数处理停止,如果有一个问号IIRC处理...
相关问题
- 1. IN JAVA PROGRAMMING
- 2. getopts不工作 - bash
- 3. Old School Sound Programming in Python
- 4. bash - 开关盒中的getopts
- 5. 在bash中解析getopts
- 6. 如何调用getopts的在bash多次
- 7. 不同功能的bash getopts选项
- 8. 如何在bash脚本中使用getopts?
- 9. 使用getopts(bash)的多选项参数
- 10. getopts如何设置bash变量
- 11. bash - 在bash脚本中使用getopts和关联数组
- 12. 关于getopts函数
- 13. prolog:logic programming
- 14. Programming fundas
- 15. 解析参数getopts的后
- 16. 你如何使用getopts?
- 17. 如何获得使用getopts的在bash脚本的使用
- 18. 猛砸getopts的命令
- 19. 在bash中检查getopts状态的最佳方法是什么?
- 20. 使用getopts的Bash不会返回预期的回显值
- 21. Bash getopts会丢掉最后一个参数
- 22. 使用getopts的Bash脚本 - 使用目录作为参数
- 23. 如何在getopts bash中使参数可选?
- 24. 如何在bash中使用getopts来解析脚本参数?
- 25. bash getopts忽略选项,除非以某种方式指定
- 26. Matlab ObjectOrientated Programming Vectorize
- 27. XML Programming C#
- 28. GAMS programming-Defining Subsets
- 29. 如何在bash中为getopts提供批量参数?
- 30. 是bash getopts函数对命令行选项的破坏吗?
oh..i看..非常感谢你的帮助 – sagi 2010-03-21 16:28:05