C# 命令行参数和 ls

标签 c# .net bash ls msys

我正在使用 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 传递的参数。

但即使我添加引号,引号也会包含在参数中,而不是将两个参数合二为一。

有没有办法让我进入未处理的命令行,这样我就可以看到控制字符或其他东西是否发生了有趣的事情?

任何见解将不胜感激!

最佳答案

您可以使用Environment.Command Line 获取原始命令。不确定 bash 的东西,抱歉;可能涉及行尾(CR vs LF vs CRLF vs LF CR)。

关于C# 命令行参数和 ls,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/649697/

相关文章:

c# - 此属性的“基础”是什么?

c# - 基于 Session 值的 MVC OutputCache

git - tfs 服务器上的身份验证失败

c# - 按 Enter 时 Visual Studio 执行关闭

javascript - 从IE浏览器调用winform函数

c# - 为什么 Url.IsLocalUrl 对于 ASP.NET MVC 中的本地 URL 是假的?

c# - WPF:动态连接 Canvas 上的矩形与之间的路径

.net - 更改 ToolTipText 显示持续时间

bash - 查找端口号和域名以连接到 Hive 表

bash - For循环的参数收集空格而不是参数