2011-05-22 94 views
0

我有以下代码,它用于在某些输入上运行java程序,并根据结果文件测试该输入以进行验证。shell脚本中的别名帮助

#!/bin/bash 
java Program ../tests/test"[email protected]".tst > test"[email protected]".asm 
spim -f test"[email protected]".asm > temp 
diff temp ../results/test"[email protected]".out 

上述代码的主旨是:

  1. 运行程序在另一个目录中的测试文件,和管道输出到装配文件。
  2. 在该程序的输出上运行一个MIPS处理器,将其输入到一个名为temp的文件中。
  3. 在生成的输出I和一些预期的输出上运行diff。

我做了这个shell脚本来帮助我自动检查我的课外作业。我不想再手动检查。

我一定在做错了什么,因为虽然这个程序只有一个参数,但它不止一个会失败。我得到的,如果我使用$ @输出为:

./test.sh: line 2: test"[email protected]".asm: ambiguous redirect 
Cannot open file: `test0' 

编辑:

啊,我想通了。此代码解决了这一问题:

#!/bin/bash 
for arg in [email protected] 
do 
java Parser ../tests/test"$arg".tst > test"$arg".asm 
spim -f test"$arg".asm > temp 
diff temp ../results/test"$arg".out 
done 

事实证明,庆典必须解释不同的CMD精氨酸每个我调用$ @时间。

enter code here 

回答

1

如果您提供多个命令行参数,那么显然[email protected]将扩大到多个参数列表,这意味着你的所有命令都将是无稽之谈。

你认为多重参数会发生什么?