Zsh 包含一个强大的实用程序,用于解析命令行选项zparseopts.
有没有一种简单的方法来提取所有不以连字符开头的命令行参数的数组?
$@使用参数扩展后缀 过滤位置参数以:#-*去除与模式匹配的元素,双引号内-*的参数扩展标志 @以保留空元素。添加M标志以仅保留与模式匹配的元素。
non_hyphen_arguments=("${(@)@:#-*}")
hyphen_arguments=("${(@M)@:#-*}")
Run Code Online (Sandbox Code Playgroud)
然而,这不是解析命令行参数的好方法;例如,给定
myscript hello -a world
Run Code Online (Sandbox Code Playgroud)
你会得到hello和world在non_hyphen_arguments和-a中hyphen_arguments。
带有单字母选项的更简单的参数解析形式是getopts.