我尝试node
在 bash 脚本中对当前 PATH 进行少量内联字符串操作(在mintty.exe
GitHub Windows Action Runner 中),但效果不如预期。我在桌面上的 MSYS2 终端中重现了这个问题,这样更容易将其简化为最简单的示例。
如果我运行echo $PATH
,我会得到/c/...:...
我期望的路径(类似unix的正斜杠,冒号):
camer@QUASAR MINGW64 ~
$ echo $PATH
/c/...:/...
如果混入另一个字符串,一切也都会按预期工作:
camer@QUASAR MINGW64 ~
$ echo "console.log('$PATH')"
console.log('/c/...:/...')
但是当我将该字符串作为-e
节点的选项时,它会恢复为 Windows 样式路径。请注意,这实际上并没有运行,因为反斜杠扰乱了 Node 对字符串的解释。它对第一个字符串出错,\u
因为它认为它是 unicode 字符的开头。除其他原因外,这证实了 $PATH 格式不正确。
camer@QUASAR MINGW64 ~
$ node -e "console.log('$PATH')"
[eval]:1
console.log('C:\...')
我无论如何也想不通为什么……
即使我将已知工作的输出包装起来echo ...
,node -e "..."
它也会把它弄乱。