Chinaunix

标题: 关于命令行参数解析的问题求教 [打印本页]

作者: linuxsmth    时间: 2008-05-02 14:18
标题: 关于命令行参数解析的问题求教
通常用getopts可以解析shell命令行参数
./1.sh -a abc -b def
abc和def两个参数都将被正确解析

但如果执行./1.sh -a abc tt  -b def ghi jk 用getopts 解析到-a选项时将只能得到参数abc, 而tt被丢失。
有什么别的方法能正确解析所有的命令行参数而又不改变用户以上输入形式么(包括用户输入时不添加“”)      谢谢

[ 本帖最后由 linuxsmth 于 2008-5-2 14:24 编辑 ]
作者: angeljyt    时间: 2008-05-02 15:09
echo $@
echo $*
要不自己从$0提取出来按你的逻辑处理参数

[ 本帖最后由 angeljyt 于 2008-5-2 15:10 编辑 ]
作者: linuxsmth    时间: 2008-05-02 15:14
原帖由 angeljyt 于 2008-5-2 15:09 发表
echo $@
echo $*
要不自己从$0提取出来按你的逻辑处理参数



用$@会把-a -b这些东西也包含进去吧 我只想保留参数值而不包含选项 请问有没有比较好的办法
作者: linuxsmth    时间: 2008-05-02 15:15
原帖由 angeljyt 于 2008-5-2 15:09 发表
echo $@
echo $*
要不自己从$0提取出来按你的逻辑处理参数


自己按逻辑来处理也是一种方法  
先要把选项识别出来 还要将属于各选项对应的参数分别提取保存起来
就是不知道有没有更好的办法了
作者: ly5066113    时间: 2008-05-02 15:40
-a "abc tt"
作者: linuxsmth    时间: 2008-05-02 15:44
原帖由 ly5066113 于 2008-5-2 15:40 发表
-a "abc tt"


呵呵 前面说了“不改变用户以上输入形式么(包括用户输入时不添加“”)”
作者: waker    时间: 2008-05-02 20:16
原帖由 linuxsmth 于 2008-5-2 15:14 发表



用$@会把-a -b这些东西也包含进去吧 我只想保留参数值而不包含选项 请问有没有比较好的办法

适合这个要求的命令是getopt而不是getopts




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2