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