我在 .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/