我正在将 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 变量,其中包含未声明参数的数组;但是,我不知道 PowerShell 中是否有与 getopt 命令等效的命令。有没有另一种方法可以在不实现我自己的 getopt 的情况下完成此任务?
最佳答案
getopt 所做的事情在 PowerShell 中无法直接实现,我宁愿建议不要直接重新创建它。正如您已经注意到的,参数大写并不重要,解析也有很大不同,不区分短选项和长选项,而是允许您缩短任何参数,只要它保持明确即可。
我的建议是看看您是否可以为选项提供有意义的名称,以便与 PowerShell 的参数解析一起使用,而不是反对它。然后,您可以包含有关 getopt 样式参数如何映射到 PowerShell 的文档(也许还提供一个简单的脚本在两者之间进行转换)。
关于shell - PowerShell 中类似 GetOpt 的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23016298/