我不想创建新文件.我想完成类似的事情:
cmd1 > a
cmd2 > b
cat a b b | sort | uniq -u
Run Code Online (Sandbox Code Playgroud)
但不使用文件a和b.
我正在尝试编写一个循环,但这不起作用:
for t in `ls $TESTS_PATH1/cmd*.in` ; do
diff $t.out <($parser_test `cat $t`)
# Print result
if [[ $? -eq 0 ]] ; then
printf "$t ** TEST PASSED **"
else
printf "$t ** TEST FAILED **"
fi
done
Run Code Online (Sandbox Code Playgroud)
这也没有帮助:
$parser_test `cat $t` | $DIFF $t.out -
Run Code Online (Sandbox Code Playgroud)
Diff 显示输出不同(很奇怪,我看到所需错误行的输出,因为它被打印到 stdout,并且没有被 diff 捕获),但是当使用临时文件运行时,一切正常:
for t in `ls $TESTS_PATH1/cmd*.in` ; do
# Compare output with template
$parser_test `cat $t` 1> $TMP_FILE 2> $TMP_FILE
diff $TMP_FILE $t.out
# Print result
if [[ $? …Run Code Online (Sandbox Code Playgroud)