我正在尝试使用 bash 脚本来完成学习任务。作为一名 bash 新手,我尝试改编现有的脚本以满足我的目的:使用不同的编译参数编译/制作 C 程序,执行它并将其输出重定向到文件。
脚本如下:
#!/bin/bash
EXECUTABLE=./PartitionedHashJoin
OUTFILE=results.txt
for sizelog2 in $(seq 0 20)
do
for buckets in $(seq 2 2048)
do
size=$((1<<$sizelog2))
make clean
make PartitionedHashJoin NUM_RELATION_R=$sizelog2 NUM_BUCKETS=$buckets
echo -n $sizelog2 " " $buckets " " >> $OUTFILE
$EXECUTABLE >> $OUTFILE
done
done
但是,bash 抛出一个错误:
...: 第 6 行: 11927 非法指令: 4 $EXECUTABLE >> $OUTFILE
如果我删除可执行文件输出的重定向,那么它就可以工作。
我不明白我在重定向中输入了什么错误 - 在另一个只有一个循环的例子中,它工作得很好。到目前为止,Google 还没有对我做错的事情提出任何建议。
有人能发现它吗?
答案1
$EXECUTE >> $REDIRECT 语句不在脚本的第 6 行。因此错误不在脚本中,而是在可执行文件中。
...: line 6: 11927 Illegal instruction: 4 $EXECUTABLE >> $OUTFILE
这也很容易看出,因为或错误文本。“非法指令”意味着 CPU无法执行某些命令理论上是可以的,但是 bash 是稳定的软件,成熟的软件中不会出现这些错误。
您用省略号替换的文本通常包含已终止或引发错误的可执行文件。我打赌 50 次它不是“bash”。