c# - 使用 .Net Core 在 Linux 机器上查找内核数失败并出现错误(未终止的引用字符串)

标签 c# linux ubuntu .net-core sh

我在 .Net Core 中编写了以下代码来检索运行 Ubuntu 操作系统的机器的核心数。

var proc = new Process
{
   StartInfo = new ProcessStartInfo
   {
      FileName = "/bin/sh",
      Arguments = "-c 'grep \"$0\" /proc/cpuinfo | uniq | sed -e \"$1\"' \"cpu cores\" 's/[^0-9]*//g'",
      UseShellExecute = false,
      RedirectStandardOutput = true,
      CreateNoWindow = true
   }
};

proc.Start();
string line = proc.StandardOutput.ReadToEnd();

如果我在 putty 上执行命令会给出预期结果,但当我尝试在我的 .Net Core 代码中运行它时失败并出现错误。

错误:$0: 1: $0: 语法错误:未终止的引用字符串

任何 sh 和 .Net-Core 专家都可以解释我的代码有什么问题?

最佳答案

在您的参数字符串之前放置一个@ 使其成为逐字字符串。您的字符串现在将反斜杠作为转义序列。

var proc = new Process
{
   StartInfo = new ProcessStartInfo
   {
      FileName = "/bin/sh",
      Arguments = @"-c $'grep \""$0\"" /proc/cpuinfo | uniq | sed -e \""$1\"" \""cpu cores\"" 's/[^0-9]*//g''",
      UseShellExecute = false,
      RedirectStandardOutput = true,
      CreateNoWindow = true
   }
};

关于c# - 使用 .Net Core 在 Linux 机器上查找内核数失败并出现错误(未终止的引用字符串),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45729113/

相关文章:

php - Eclipse PHP 不会在断点处停止

c# - Xamarin HTTPClient 突然没有 GET/POSTing

c# - 是否可以使用 itextSharp 将 PDF 页面转换为图像?

c - 如何使用C程序进入网络命名空间并读取文件内容

java - 如何在 Linux 上使用 SIGAR 和 maven?

ios - Ubuntu 上的 APNS 证书

c# - 使用正则表达式从字符串中提取单词

c# - 带有按钮 onClick 事件的 UserControl 的事件处理程序

linux - lpr: 错误 - 未知选项 "V"

performance - 从源代码/从头开始编译 linux perf 工具及其依赖的内核模块