繁体   English   中英

从 C# 运行 bash 命令时出现无法执行二进制文件错误

[英]I get a can't execute binary file error when running a bash command from C#

我创建了一个 Discord Bot,您可以与之交互(在具有默认 Raspberry Pi 操作系统的 Raspberry Pi 上运行)。 我还添加了一个命令来执行 shell 命令。 我的代码:

        ProcessStartInfo inf = new()
        {
              CreateNoWindow = true,
              RedirectStandardError = true,
              RedirectStandardOutput = true,
              RedirectStandardInput = true,
              FileName = "/bin/bash",
              Arguments = command,
        };
        if (Process.Start(inf) is Process cmd)
        {
                string ret = "Output: " + await cmd.StandardOutput.ReadToEndAsync();
                ret += "\nError Output: " + await cmd.StandardError.ReadToEndAsync();
                await Program.Log(ret);
                return ret;
        }

当我将命令设置为“回显你好,世界!” 我只是得到错误

/usr/bin/echo: /usr/bin/echo: 无法执行二进制文件

来自标准输出。 我究竟做错了什么?

如果要通过它执行某些操作,则必须将 -c 参数传递给 bash

ProcessStartInfo inf = new()
{
   CreateNoWindow = true,
   RedirectStandardError = true,
   RedirectStandardOutput = true,
   RedirectStandardInput = true,
   FileName = "/bin/bash",
   Arguments = $"-c \"{command}\""
};
if (Process.Start(inf) is Process cmd)
{
   string ret = "Output: " + await cmd.StandardOutput.ReadToEndAsync();
   ret += "\nError Output: " + await cmd.StandardError.ReadToEndAsync();
   await Program.Log(ret);
   return ret;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM