命令行选项¶
本文档描述命令行选项
在 windows 命令行中,可以查看 dir 的命令如下:
他是有如此之多的选项。下面的内容,我们讲述 ICmd 中如何定义命令行选项。
ICore 中命令行选项为命令行参数的一种,它以-或--开头,后面跟着一个选项名,然后可以跟着一个参数值。
它为命令的执行提供指导,使得命令的执行更加灵活、可控。
示例¶
这里我们也定义一个 dir 的命令作为示例,讲述如何定义命令行选项。注意这里我不会去实现具体的功能,只作为讲清楚命令行选项的工具。
我们直接列出他们的输出
这里请注意最后一个请求,我们输入了不存在的选项,ICmd 会提示错误信息。也就是说用户所能使用的选项必须是已经定义的选项。
$CmdOption¶
$CmdOption 用于定义命令行选项,该宏注解只有一个参数,就是选项名称。注意这里的选项名称是全称,在后续有简称可以定义。
这里不用定义选项数据类型的原因也很简单,一个选项只有两种状态,存在或者不存在,没有薛定谔的猫问题。所以我们不需要定义数据类型,数据类型直接是 bool 类型, 并且这个参数默认是不存在的, 值为 false。如果用户在命令行中使用了该参数,则它的值将变为 true。
选项后面可以跟随选项参数,这里选项的参数内容将在下一篇文档中进行讲解。
$CmdOptionShortName¶
一个选项的名称可以很长,能够完整表述出该选项的意义,用户不需要靠猜测,也可以不看 Memo。 但是很长的选项会让用户的输入变得困难。所以我们使用 $CmdOptionShortName 来定义一个选项的简称。
$CmdOptionShortName 只有两个参数,第一个参数是选项的全称,第二个参数是选项的简称。
如下,我们改造上面的示例:
上面的示例中,我们为 resurse 选项和 time 选项定义了简称, r 和 t。
此时用户的请求就可以使用简称来输入选项了。
而此时我们的帮助也有所变化
两者想对比,ShortName 的内容被填充上了。
$CmdOptionMemo¶
$CmdOptionMemo 用于定义选项的说明,该宏注解有两个参数,第一个参数是选项名称,第二个参数是选项的说明。选项的说明必须是双引号括起来的内容。
$CmdOptionRequired¶
$CmdOptionRequired 有一个参数,这个参数就是选项名称。
$CmdOptionRequired 用于定义选项为必填项,如果用户没有输入该选项,则命令行会报错。
这个选项后面一般会跟着相应的参数。如果一个选项是必填项,而没有跟随参数,这个参数也没多大意思,它的值是固定的,那么为什么还需要这个参数呢?
举个例子,如果我们做认证的工作,那么 --name 和 --password 这两个选项一定是必填项,这样就能够保证用户输入了用户名和密码。
关于 选项参数,请参考下篇内容。
$CmdOptionNoValue¶
这个注解有一个参数,参数内容就是选项名称。
该注解的目的是告知 ICmd 这个选项没有任何参数,如果有参数,则是用户输入错误,程序需要报错提示用户。
举个例子,在 mydir 命令中,我们定义了一个选项 --recurse,这个选项就不应该有任何参数,如果用户输入了 --recurse 而有后续参数,则程序需要报错提示用户。