Mat*_*att 5 c# console command-line pipe
我正在编写一个带有2个参数的C#控制台应用程序: myprogram.exe param1 param2
param2 是可选的,想法是如果它不存在,获取管道数据:
echo "hithere" | myprogram.exe param1
Run Code Online (Sandbox Code Playgroud)
我通过捕获Console.In.ReadToEnd()仅传递1个参数时使这部分工作.
我面临的问题是,当只传递1个参数并且没有数据被管道传输时,它只是在那里听取用户输入,并且关闭的唯一方法是Ctrl+C结束程序.
相反,有没有办法返回错误并退出程序,如果只提供了1个参数,没有数据被管道?
为了测试是否有任何等待,我尝试使用:
Console.OpenStandardInput().CanReadConsole.OpenStandardInput().LengthConsole.In.Peek()那没用.
我也试过了这个stackoverflow问题底部提到的'hack':C#Console接收带管道的输入.
有任何想法吗?
检查命令行,而不是检查控制台。如果他们传递了足够的参数,则假设没有从控制台获取任何内容。如果他们没有指定足够的参数,则假设 URL 将来自控制台。您不需要使用ReadToEnd(),只需使用 ,ReadLine()这样您就可以逐行进行操作。如果使用,ReadToEnd()则必须按 CTRL+Z(或 Linux 中的 CTRL+D)来指示输入流的结束。