PowerShell中的命令几乎类似于Bash,但是点符号扩展给我带来了很多工作。目前,我必须用引号将许多命令参数括起来:
.mvnw.cmd -Dmaven.repo.local=.m2/repository deploy:deploy-file -Durl=http://zippo:8081/repository/grinch/ -DrepositoryId=nexus -DgroupId=com.zippo -DartifactId=test -Dversion=1.0 -Dpackaging=jar -Dfile=test-1.0.jar
vbl.成为
.mvnw.cmd -D"maven.repo.local"=".m2/repository" deploy:deploy-file -Durl=http://zippo:8081/repository/grinch/ -DrepositoryId=nexus -DgroupId="com.zippo" -DartifactId=test -Dversion="1.0" -Dpackaging=jar -Dfile="test-1.0.jar"
如何禁用点表示法,或者重写点运算符,用其他东西替换它,等等?
1条答案
按热度按时间abithluo1#
如何禁用点表示法?
-foo.bar
这样的标记被分成两个参数,-foo
和.bar
-参见GitHub issue #6291(意外复制:GitHub issue #15541);这只是several related bugs中的一个,目前至少是PowerShell 7.2.6。'...'
**中(或"..."
,如果需要字符串插补):备选方案:
--%
,它消除了引用的需要,但请注意其许多限制,特别是无法(直接)将PowerShell变量和表达式合并到命令中-有关详细信息,请参阅this answer。cmd /c
**调用,在这种情况下,您可以引用您的整个命令行,从而避免了解析错误;请注意,cmd.exe
转发的任何输出都会根据[Console]::OutputEncoding
中存储的字符编码进行解码,因此除非mvnw
使用此编码作为其输出,否则您可能需要(暂时)先将[Console]::OutputEncoding
设置为实际编码。