我正在 Windows 上从命令行运行节点脚本,并尝试传入包含空格的文件夹路径。当通过 require 模块或通过process.argv变量访问这个参数时,我似乎没有得到我所期望的。对于以下命令:
node script.js "C:\path\to\folder\with a space\"
Run Code Online (Sandbox Code Playgroud)
我似乎得到以下值:
process.argv[2] = C:\path\to\folder\with a space\"
注意"字符串中的尾随。如果参数不带引号传递,它显然将它作为在空间上拆分的不同参数传递。
我做错了什么,还是这是一个错误?如果这是一个错误,是否有可能的解决方法?
结尾的反斜杠转义了 shell 再次暗示的引号(而不是由于缺少结束引号而中止)。
修复方法只是用另一个反斜杠转义该反斜杠或完全忽略它:
C:\Users\myself> python -c "import sys; print sys.argv[1]" "foo\bar\"
foo\bar"
C:\Users\myself> python -c "import sys; print sys.argv[1]" "foo\bar\\"
foo\bar\
Run Code Online (Sandbox Code Playgroud)
请注意,您只能通过这种方式转义最后一个反斜杠 - 字符串中的任何其他反斜杠都不会充当转义字符:
C:\Users\myself> python -c "import sys; print sys.argv[1]" "foo\\bar\\"
foo\\bar\
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5562 次 |
| 最近记录: |