Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Command line 如何忽略命令行参数中的转义字符?_Command Line_F# - Fatal编程技术网

Command line 如何忽略命令行参数中的转义字符?

Command line 如何忽略命令行参数中的转义字符?,command-line,f#,Command Line,F#,考虑一个简单的F#控制台应用程序,它回显传递给它的命令行参数,每行一个命令: [<EntryPoint>] let main argv = argv |> Array.iter (printfn "%s") 0 如何在不将斜杠解释为转义字符的情况下检索命令行参数?System.Environment.CommandLine允许您访问完整的未转义命令行,您可以随意处理它 但是,除非你计划在你的应用程序中实现一个完整的解析器,否则这将不是一个可靠的方法,而且你不

考虑一个简单的F#控制台应用程序,它回显传递给它的命令行参数,每行一个命令:

[<EntryPoint>]
let main argv = 
    argv |> Array.iter (printfn "%s")
    0

如何在不将斜杠解释为转义字符的情况下检索命令行参数?

System.Environment.CommandLine允许您访问完整的未转义命令行,您可以随意处理它

但是,除非你计划在你的应用程序中实现一个完整的解析器,否则这将不是一个可靠的方法,而且你不太可能可靠地处理你的应用程序可能被调用的各种shell实现的所有拜占庭转义规则。e、 g.
cmd.exe
的转义方式不同于
powershell.exe
,后者又不同于Cygwin等


一个更好的选择是,只需按原样使用
argv
,根据您认为合适的方式对其进行验证(例如
File.Exists(argv[0])
或其他什么),如果用户把事情弄糟了,就用一条有用的错误消息退出。

谢谢!关于不同shell中不同的转义行为,这一点很好——我只考虑了
cmd.exe
> app.exe "c:\some path\" "c:\another path"
c:\some path" c:\another
path