因此,我通常会为所写的任何代码编写/找到一个测试用例生成器。这种类型的代码通常会导致一些文件输出。为了彻底起见,我会尝试生成许多不同的文件来测试我的代码。
假设命令是这样的:
java test <parameters/> > <output filename/>
有没有办法针对许多不同的参数值自动执行此操作并生成许多不同的文件?
我试过:
for i in seq `0 3`; do java test $i > $i.txt; done
我无法在文件名中使用 $i,如果没有它,命令不会给我任何错误,但也没有做任何其他事情。我知道 Unix 命令行非常强大,我感觉这应该是可能的,但我只是不知道如何去做。
答案1
如果你正在使用 Bash,则没有必要使用seq
。此外,建议你使用$()
而不是反引号(但如果您使用其中一种形式,则也不需要它们)。
for i in {0..3}; do java test $i > "$i.txt"; done
或者
for ((i=0;i<=3;i++)); do java test $i > "$i.txt"; done
答案2
假设您在 bash shell 中,只需将seq
命令移到反引号中:
对于 `seq 0 3` 中的 i;执行 java 测试 $i > $i.txt;完成
答案3
我想说让你的应用程序读取标准输入并产生新的线程,会更有效率。
还有另一个循环:
seq 0 3 | while read i; do java test $i > "$i.txt"; done