Bash 脚本:重定向到文件会出现“非法指令”

Bash 脚本:重定向到文件会出现“非法指令”

我正在尝试使用 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”。

相关内容