如何在PowerShell中从WSL2运行Bash脚本并传参及捕获输出?
在PowerShell中通过WSL给bash脚本传参并捕获输出
实现方法
要完成传参和捕获输出这两个需求,只需在原有代码基础上做两处调整:
1. 传递4个参数
把要传递的参数整理成数组,转义其中的特殊字符(比如双引号)后,和脚本内容一起拼接传递给bash -c。
2. 捕获HEX颜色输出
直接将wsl命令的执行结果赋值给变量,PowerShell会自动捕获脚本的标准输出内容。
修改后的代码示例
# 读取目标脚本内容为单行字符串 $DcolorsScript = Get-Content -Raw ./shellscripts/dcolors.sh # 定义要传递的4个参数(替换成你实际需要的参数值) $scriptParams = @("param1", "param with spaces", "param3", "param#4") # 转义脚本和参数中的双引号,适配bash语法 $escapedScript = $DcolorsScript -replace '"', '\"' $escapedParams = $scriptParams -replace '"', '\"' # 执行脚本并捕获输出的HEX颜色列表 $hexColors = wsl bash -c "$escapedScript $($escapedParams -join ' ')" # 输出捕获到的结果 $hexColors
注意事项
- 如果参数和脚本内容中都不包含双引号或空格等特殊字符,可以省略转义步骤,直接拼接参数即可。
$hexColors变量存储了脚本输出的所有内容,你可以通过$hexColors -split "n"`将其拆分成单行的HEX代码列表,方便后续处理。
内容的提问来源于stack exchange,提问作者fmotion1
相关产品推荐
相关产品推荐

