微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – 通过Mono上的System.Diagnostics.Process执行管道命令

是否可以通过System.Diagnostics.Process执行以下管道命令?
echo "test" | sudo -S shutdown -r +1

我已经尝试将文件名设置为“/ bin / bash”,以上为参数,但没有成功.

...
var processstartinfo = new processstartinfo { FileName = "/bin/bash",Arguments = "echo \"test\" | sudo -S shutdown -r +1" };
process.StartInfo = processstartinfo;
...

解决方法

bash将您的命令解释为文件名后跟参数,这意味着它会调用echo并将所有其余的(包括管道)传递给它进行打印,这样您就可以进行测试了. sudo -S shutdown -r 1 echoed和sudo不会被执行.

您应该使用-c选项来执行命令.此外,您应该引用命令本身,以便它作为单个参数传递.这样的事情应该有效:

var processstartinfo = new processstartinfo
{
    FileName = "/bin/bash",Arguments = "-c \"echo test | sudo -S shutdown -r +1\""
};

原文地址:https://www.jb51.cc/csharp/243233.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐