在Powershell中运行fastlane并尝试获取由fastlane设置的环境变量。
我有以下代码,我试图使用它来获取变量,但是循环后FASTLANE_SESSION
为空-这就是为什么我尝试在循环中自行设置env
的原因:
$OUTPUT = bash --% echo y | fastlane spaceauth -u [email protected] 2>&1 | ForEach-Object {
Write-Host $_.ToString() # print to host (console)
if ($_ -is [string]) {
$env:my = $env:FASTLANE_SESSION
return $_
} # send only stdout through pipeline
} | Select-Object -Last 1
解决这个问题有什么想法吗?
如果fastlane
输出的最后一行为空,例如换行符,那就是您得到的。没有fastlane
,请改为使用java
进行测试。像您的示例一样,首先测试[string]
:
java -version 2>&1 | foreach { if ($_ -is [string]) { return $_; } } | select -Last 1;
无输出。
第二个非空白字符测试:
java -version 2>&1 | where { $_ -match '\S+' } | select -Last 1;
输出当前安装的版本。
对于您的特定示例,这样的方法应该起作用:
$OUTPUT = fastlane spaceauth -u [email protected] 2>&1 | where { $_ -match '\S+' } | select -Last 1;