在bash中我可以执行以下操作,如果未设置name
,则将UserName
设置为默认值:
name=${UserName:-James}
Powershell是否支持这样的事情?
答案 0 :(得分:2)
使用函数和参数,我们可以做一些我认为你正在做的事情。
一个功能示例:
function WriteUser
{
param($user = "A User",
$message = "Message")
Write-Host $user
Write-Host $message
}
调用不带参数的函数
WriteUser
会给你输出:
用户
消息
WriteUser -user"我" -message"错误"
会写下以下内容:
我
错误
一些额外的注释,您不必使用参数名称。
WriteUser "Bob" "All Systems Go" would work by the order of the parameters.
您也可以切换命名参数的顺序:
WriteUser -message "Error" -user "user, user"
并且该函数将把参数设置为正确的。
否则,我相信你必须做一些事情来接近三元行为,如:
function Like-Tern
{
for ($i = 1; $i -lt $args.Count; $i++)
{
if ($args[$i] -eq ":")
{
$coord = $i
break
}
}
if ($coord -eq 0) { throw new System.Exception "No operator!" }
$toReturn
if ($args[$coord - 1] -eq "")
{
$toReturn = $args[$coord + 1]
}
else
{
$toReturn = $args[$coord -1]
}
return $toReturn
}
Credit for the idea here 功能文件还可以包括:
Set-Alias ~ Like-Tern -Option AllScope
然后你会像使用它一样:
$var = ~ $Value : "Johnny"
当然,~
完全是武断的,因为我无法让${
工作......