【发布时间】:2018-07-31 09:17:23
【问题描述】:
我在从 Linux .net 核心控制台应用程序调用命令时遇到一些问题。
Sub Main()
Dim PI As New ProcessStartInfo
Using Proc As New Process
With PI
.FileName = "cat"
.Arguments = "/etc/*-release"
.RedirectStandardOutput = True
.UseShellExecute = False
.CreateNoWindow = True
End With
Proc.StartInfo = PI
Proc.Start()
PI = Nothing
Console.Write(Proc.StandardOutput.ReadToEnd)
End Using
End Sub
我收到此错误:
cat: '/etc/*-release': No such file or directory
如果我禁用重定向并设置 UseShellExecute = True,它会起作用,但我希望能够在我的代码中使用输出。
【问题讨论】:
-
如果你想避免使用 shell,那么你必须复制 shell 所做的工作来扩展
/etc/*-release。不太熟悉该语言,但也许它有 Unix Cglob()函数的包装器或等价物? -
我并没有过多考虑到底发生了什么。我只是希望 'cat' 进行“文件搜索”而不是 shell ......但我现在看到了逻辑,谢谢。