我正在使用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.CommandLine来获取原始命令。不好意思,抱歉;可能涉及到行尾(CR,LF,CRLF,LFCR)。

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

10-17 02:24