栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Shell脚本参数解析

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Shell脚本参数解析

您想使用

getopt
多头和空头期权。工作代码示例:

# Parse argumentsTEMP=$(getopt -n $PROGRAM_NAME -o p:P:cCkhnvVS --long domain-password:,pop3-password:         ,create,cron,kill,help,no-sync-passwords,version,verbose,skip-pop3 -- "$@")# Die if they fat finger arguments, this program will be run as root[ $? = 0 ] || die "Error parsing arguments. Try $PROGRAM_NAME --help"eval set -- "$TEMP"while true; do  case $1 in      -c|--create)  MODE="CREATE"; shift; continue     ;;        -C|--cron)        MODE="CRON"; shift; continue       ;;        -k|--kill)        MODE="KILL"; shift; continue       ;;        -h|--help)        usage     exit 0       ;;        -n|--no-sync-passwords)      SYNC_VHOST=0; shift; continue      ;;        -p|--domain-password)        DOMAIN_PASS="$2"; shift; shift; continue     ;;       -P|--pop3-password)         POP3_PASS="$2"; shift; shift; continue       ;;       -v|--version)    printf "%s, version %sn" "$PROGRAM_NAME" "$PROGRAM_VERSION"  exit 0    ;;     -v|--verbose)  VERBOSE=1; shift; continue      ;;     -S|--skip-pop3)SKIP_POP=1; shift; continue     ;;     --) # no more arguments to parse break     ;;     *)  printf "Unknown option %sn" "$1"       exit 1    ;;        esac      done

注意,

die
是先前定义的功能(未显示)。

-n
选项告诉getopt将错误报告为我的程序的名称,而不是
getopt
-o
定义一个简短选项列表(
:
在一个选项之后指示所需的参数)并
--long
指定一个长选项列表(对应于简短选项)。

其余的只是一个简单的开关,

shift
适当地调用以前进参数指针。注意,打电话
shift;shift;
只是一种顽固的习惯。在当前的现代世界中,
shift 2
可能就足够了。

现代的getopt在较新的平台上非常一致,但是您可能会在较旧的系统(大约在Redhat 9之前)上遇到一些可移植性问题。请参阅

mangetopt
以获取有关向后兼容性的信息。但是,您不太可能会遇到它的需求。

最后,在解析选项之后,您可以再次调用:

eval set -- "$@"

在完成getopt解析选项后,这会将参数指针移至命令行上剩余的任何位置。然后,您可以

shift
继续阅读它们。例如,如果命令如下所示:

./foo --option bar file1.txt file2.txt file3.txt

完成后,别忘了提供一个方便的

-h /--help
选项来打印新的花式选项。:)如果使该输出对help2man友好,则会有一个即时手册页与您的新工具一起使用。

编辑

在大多数发行版中,您可以在中找到更多示例

getopt
代码
/usr/share/doc/util-linux/examples
,这些代码应默认情况下已安装。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/405847.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号