遇到一个难搞的问题,同样的指令,在命令行可以正常跑,用 c#调用就出问题
public static string Run(this string cmd) {
var escapedArgs = cmd.Replace("\"", "\\\"");
var process = new Process() {
StartInfo = new ProcessStartInfo {
FileName = "/bin/bash",
Arguments = $"-c \"{escapedArgs}\"",
RedirectStandardOutput = true,
UseShellExecute = false,
CreateNoWindow = true,
}
};
process.Start();
var result = process.StandardOutput.ReadToEnd();
process.WaitForExit();
return Regex.Replace(result, @"[\u0001-\u001F]", "");;
}
1
ReferenceE 2021-04-15 20:43:42 +08:00 via Android
建议贴一下错误输出
|
2
zxCoder OP @ReferenceE 代码没有运行错误,只是我执行的这个脚本命令不能达到预期结果
|
3
ReferenceE 2021-04-15 23:36:25 +08:00 via Android
@zxCoder ...
|
4
ysc3839 2021-04-15 23:43:51 +08:00 via Android
把脚本发来看看吧
|
5
msg7086 2021-04-16 05:27:09 +08:00
你写个脚本,把传入的 argv 全部打印出来看看不就知道哪里不一样了。
最终系统执行的语句也不是字符串而是数组,字符串是要经过 Shell 解析成数组的。 比如说在 bash 下运行 ls -l /u* 的话,实际执行的是 ['ls', '-l', '/usr'] 。 |