Powershell 5说“no way Jose”,不能用空字符串或空字符串连接path。我说为什么不呢?有没有办法让join-path更“灵活”,而无需添加更多if-else块?
$its_in_the_path = $true
#$its_in_the_path = $false
if ($its_in_the_path) {
$mydir = ""
}
else {
$mydir "C:\tool\path
}
$tool = join-path $mydir "runit.exe"
Cannot bind argument to parameter 'Path' because it is an empty string.
daskljdhgfaklsuhfalhfluwherfluqwhrluq2345214723452345h2kjrwefqy345
At + ~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidData: (:) [frunsim], ParameterBindingValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationErrorEmptyStringNotAllowed,frunsim
圣地亚哥·斯奎尔宗的有用答案向您展示了如何解决无法通过直接使用 .NET API 将$null
或 “”
传递到 Join-Path
的问题。
另一种方法是完全绕过连接路径
和 [系统.IO.路径]::组合()
并手动加入路径组件:
$tool = $mydir + ('', '\')[[bool] $mydir] + "runit.exe"
上面所依赖的事实是,当被强制为布尔值(< code>[bool])时,< code>$null和< code>''(空字符串)都返回< code>$false,而任何非空字符串都返回< code>$true。反过来,当用作数组索引时(< code>[...]),< code>$false映射到索引< code>0,而< code>$true映射到< code>1 -有关PowerShell到布尔转换规则的总结,请参见本答案的底部部分。
在 PowerShell(核心)7 中,您可以使用三元条件运算符 ?:
更清楚地表达此意图,前提是$null
和 “”
也隐式转换为布尔上下文中的$false
:
$tool = $mydir + ($mydir ? '\' : '') + "runit.exe"
连接路径
将不允许$null
value或[string]::空
。您可以使用<code>路径。为此,组合方法:
PS \> [System.IO.Path]::Combine($null, "runit.exe")
runit.exe
PS \> [System.IO.Path]::Combine('C:\', 'Documents', "runit.exe")
C:\Documents\runit.exe
问题内容: 在Java 8中,我有一些String值,并且我想以逗号分隔的有效值列表结尾。如果String为 null或为空, 我想忽略它。我知道这似乎很普遍,很像这个老问题 ; 但是,该讨论并未解决null和空格(我也不喜欢公认的答案)。 我看过Java 8 StringJoiner,公用StringUtils(联接)和可信赖的番石榴(Joiner),但是似乎没有一个完整的解决方案。愿景: 会导
本文向大家介绍区分MySQL中的空值(null)和空字符(''),包括了区分MySQL中的空值(null)和空字符('')的使用技巧和注意事项,需要的朋友参考一下 日常开发中,一般都会涉及到数据库增删改查,那么不可避免会遇到Mysql中的NULL和空字符。 空字符('')和空值(null)表面上看都是空,其实存在一些差异: 定义: 空值(NULL)的长度是NULL,不确定占用了多少存储空间,但是占
在PowerShell中,是否有一个内置的类函数来检查字符串是空还是空? 到目前为止我还找不到它,如果有一个内置的方式,我不想为此写一个函数。
我有以下字符串输出: 但是我想在Java中有如下格式的输出 请帮帮我。 我正在将对象转换为json数据。请参见以下代码 我想将此应用于使用java 7的jsonString变量,就像不使用java 8一样
我希望在给定空字符串时使用默认值。我希望有更优雅的东西,然后使用if语句检查<code>$Var 下面是我试图完成的一个片段。给定一个空字符串,我希望它打印“Var: DEFAULT”。
像这样的空字符串isnull()找不到空字符串