2

Я пытаюсь использовать 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 ответ1

1

Оператор $ EXECUTE >> $ REDIRECT не находится в строке 6 в сценарии. Так что ошибка не в скрипте, а в исполняемом файле.

...: line 6: 11927 Illegal instruction: 4 $EXECUTABLE >> $OUTFILE

Это также легко увидеть, потому что или текст ошибки. "Недопустимая инструкция" означает, что процессор не может выполнить какую-либо команду. Это теоретически возможно, но bash является стабильным программным обеспечением, и эти ошибки не встречаются в зрелом программном обеспечении.

Текст, который вы заменили многоточием, обычно содержит исполняемый файл, который умер или выдал ошибку. Бьюсь об заклад, 50 повторений это не было "bash".

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .