在我的Windows当前目录下,我有以下脚本文件simple_script.sh:
#!/bin/bash
echo "hi from simple script"
我希望能够通过PowerShell命令行在WSL上运行此脚本。
使用wsl
命令,我找不到一种方法来告诉wsl调用脚本代码。
以下命令可以工作(我想)
wsl bash -c "echo hi from simple script"
然而,当尝试将脚本内容加载到变量中并运行时,结果并不如预期:
$simple_script = Get-Content ./simple_script.sh
wsl bash -c $simple_script
执行失败:
bash: -c: option requires an argument
我尝试了几种变体。 使用带有
-Raw
标志的Get-Content
似乎会使字符串中的第一个单词打印出来(但不是整个字符串)。 不包含“"”字符的命令有时候可以工作。 但我没有找到一种一致的方法。
一个类似的问题似乎无法直接与wsl一起使用,并且似乎无法运行驻留在Windows文件系统上的脚本文件。
$output = wsl -e ./simple_script.sh arg1 arg2
,但请注意,这仅涵盖成功流/标准输出。要同时捕获标准错误输出,请使用2>
重定向。 - undefined