【发布时间】:2014-05-25 19:52:08
【问题描述】:
我正在将 Korn shell 脚本转换为 PowerShell。现有脚本利用 getopt 命令并使用区分大小写的命令行参数(例如,v 的行为与 V 不同)。
set -- `getopt T:ZISedDACkpWhzLJMl:n:g:x:r:R:V:v:N:G:o:m:O: $*`
for c in $*
do
case $c in
-h) echo $USAGE
--) shift; break;;
esac
done
对于 PowerShell 版本,我希望保持参数名称和行为完全相同。我一直在研究命名函数参数的可能性;但是,PowerShell 不区分大小写,并且不允许重复的参数名称。所以,这行不通。
function dowork ()
{
param
(
[string]$V,
[string]$v,
)
...
}
我可以使用包含未声明参数数组的自动 $args 变量;但是,我不知道 getopt 命令的 PowerShell 等效项。是否有另一种方法可以在不实现我自己的 getopt 的情况下实现这一点?
【问题讨论】:
-
如果您使用高级语法声明参数,您可以强制它不忽略大小写:becomelotr.wordpress.com/2012/01/31/case-sensitive-validateset
-
好建议,但我仍然得到:错误:参数列表中的参数 $O 重复。错误:错误:+ CategoryInfo:ParserError:(:) [],ParseException 错误:+ FullyQualifiedErrorId:DuplicateFormalParameter
-
要精确复制getopt,您需要使用$args。
标签: shell powershell command-line-arguments