我在运行配置中使用try add arguments。
我添加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
但我在终端使用命令就可以了。
~/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
我认为问题是Wildcard.So如何在Intellij IDEA参数中使用Wildcard?
答案 0 :(得分:1)
字符串pg-*.txt
称为glob模式。在后一个示例中,您要求shell执行包含glob模式的给定命令。 shell将glob模式评估为预处理步骤。然后,Go程序接收已与模式匹配的文件列表。
您必须更新IntelliJ设置才能在shell中运行程序,如In JetBrains IDEs (e.g. CLion, IntelliJ), external tools cannot use globbing patterns Stack Overflow问题中所述。通过评估shell进程中的初始运行命令,程序将按预期接收参数。
另一种解决方案是将所有参数视为glob模式,并使用filepath.Glob(pattern string) (matches []string, err error)
函数手动扩展提供的参数。此策略需要从程序中进行一些预处理,但对运行时环境更为宽容。您可以在此Go Playground Example中看到此类扩展的示例。