帮助shell脚本中的别名

时间:2011-05-22 22:10:09

标签: bash shell mips

我有以下代码,用于在某些输入上运行java程序,并根据结果文件测试该输入以进行验证。

#!/bin/bash
java Program ../tests/test"$@".tst > test"$@".asm
spim -f test"$@".asm > temp
diff temp ../results/test"$@".out

上述代码的要点是:

  1. 在另一个目录中的测试文件上运行Program,并将输出通过管道传输到程序集文件中。
  2. 在该程序的输出上运行MIPS处理器,将其传送到名为temp。
  3. 的文件中
  4. 在我生成的输出和一些预期输出上运行diff。
  5. 我制作了这个shell脚本来帮助我自动检查课堂作业。我不想再手动检查了。

    我必须做错事,因为虽然这个程序使用一个参数,但它失败了多个。如果我使用$ @,我得到的输出是:

    ./test.sh: line 2: test"$@".asm: ambiguous redirect
    Cannot open file: `test0'
    

    修改

    啊,我想通了。此代码修复了问题:

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

    事实证明,每次调用$ @时,bash必须解释不同的cmd arg。

    enter code here
    

1 个答案:

答案 0 :(得分:1)

如果您提供多个命令行参数,那么显然$@将扩展为多个参数的列表,这意味着您的所有命令都是无意义的。

您希望多个参数发生什么?