如何在Intellij IDEA参数中使用通配符

3

我尝试在运行配置中添加参数。

我添加了master sequential pg-*.txt。但当我开始运行时,出现了错误。

/usr/local/go/bin/go run /home/asus/dev/6.824/src/main/wc.go master sequential pg-*.txt
master: Starting Map/Reduce task wcseq
panic: open pg-*.txt: no such file or directory

但是我在终端使用命令是OK的。

~/dev/6.824/src/main$ /usr/local/go/bin/go run /home/asus/dev/6.824/src/main/wc.go master sequential pg-*.txt
master: Starting Map/Reduce task wcseq
Merge: read mrtmp.wcseq-res-0
Merge: read mrtmp.wcseq-res-1
Merge: read mrtmp.wcseq-res-2
master: Map/Reduce task completed

我认为问题在于通配符。那么如何在Intellij IDEA参数中使用通配符?

这与问题无关,但可能会帮助像我一样到这里的某些人: 要在Intellij的配置中设置几个全局模式,例如 Code Style / Do not format:请使用;,例如:* json; * md - LogicalKip
1个回答

3
字符串pg-*.txt被称为glob模式。在后一个例子中,您要求Shell执行包含glob模式的特定命令。 Shell将glob模式评估为预处理步骤。然后,Go程序接收到与模式匹配的文件列表。
您必须更新IntelliJ设置,以便按照JetBrains IDE(如CLion、IntelliJ)中外部工具无法使用glob模式 Stack Overflow问题中所述的方式在shell内运行程序。通过在shell进程中评估初始的go run命令,您的程序将按预期接收参数。
另一种解决方案是将所有参数视为glob模式,并利用filepath.Glob(pattern string) (matches []string, err error)函数手动扩展提供的参数。这种策略需要更多的预处理,但对运行时环境更加容忍。您可以在此Go Playground示例中看到这种扩展的示例。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接