我正在使用MSYS在 Windows 上获得一些理智的可编写脚本的外壳 :)。
现在我正在编写一个用 C# 编写的控制台应用程序,它接受许多参数并将这些参数作为选项呈现给对话框中的用户。实际选项对应于文件名,我用 ls 检索。
但是,当我的文件名中包含空格时,就会出现问题。假设我有名为:
file name
with spaces
在名为 foo 的目录中,我的 C# 可执行文件名为 bar,在里面我检查“argv”数组的内容(即传递给我的应用程序的命令行参数,由 .NET 解释)。
当我调用它时会发生以下奇怪现象:
./bar.exe "文件名" "带空格" -->
file name
with spaces
./bar.exe $(ls foo) -->
file
name
with
spaces
./bar.exe $(ls -Q foo) -->
"file
name"
"with
spaces"
有谁知道这里发生了什么?显然,.NET 没有正确解析 bash 或 ls 传递的参数。
但即使我添加引号,引号也包含在参数中,而不是将两个参数合并为一个。
有没有办法让我进入未处理的命令行,所以我可以看看控制字符是否发生了奇怪的事情?
任何见解将不胜感激!