Bash Script: Redirecionar para arquivo dá "Instrução Ilegal"

2

Estou tentando usar um script bash para uma tarefa de estudo. Como bash noob, tentei adaptar um existente para se adequar ao meu propósito: Compile / Crie um programa-C com diferentes argumentos de compilação, execute-o e redirecione sua saída para um arquivo.

O script é o seguinte:

#!/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

No entanto, o bash lança um erro:

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

Se eu remover o redirecionamento da saída do executável, funcionará.

Eu não entendi o que eu poderia ter digitado errado no redirecionamento - funciona muito bem em outro exemplo com apenas um loop. O Google não tinha uma sugestão até agora para o que estou fazendo de errado.

Alguém consegue identificar?

    
por Patrick 18.10.2011 / 23:45

1 resposta

1

O $ EXECUTAR > > A instrução $ REDIRECT não está na linha 6 do script. Portanto, o erro não está no script, mas sim no executável.

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

Isso também é fácil de ver porque ou o texto do erro. "Instrução ilegal" significa que a CPU não pode executar algum comando . É teoricamente possível, mas o bash é um software estável e esses erros não ocorrem em softwares maduros.

O texto que você substituiu por reticências geralmente contém o executável que morreu ou jogou um erro. Aposto que 50 rep não foi "bash".

    
por 18.07.2013 / 22:52