我有以下代码,用于在某些输入上运行java程序,并根据结果文件测试该输入以进行验证。
#!/bin/bash
java Program ../tests/test"$@".tst > test"$@".asm
spim -f test"$@".asm > temp
diff temp ../results/test"$@".out
上述代码的要点是:
我制作了这个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
答案 0 :(得分:1)
如果您提供多个命令行参数,那么显然$@
将扩展为多个参数的列表,这意味着您的所有命令都是无意义的。
您希望多个参数发生什么?