“-bash: 1: comando não encontrado” ao avaliar 2 e 1 [fechado]

0

Estou tentando obter o valor de retorno de cpp de acordo com Como inverter uma contagem retornada do grep? . Eu tenho um script falhando com a mensagem -bash: 1: command not found .

Veja o caso de teste reduzido:

$ echo 'cpp -dM -fsanitize=undefined < /dev/null > /dev/null >2&1'
-bash: 1: command not found

Por que o Bash está tentando executar 1 como um comando e como eu limpo o erro?

    
por jww 27.10.2015 / 07:16

1 resposta

4

Como @steeldriver apontou, o problema é o redirecionamento do io mal construído. Aqui está o porquê:

    cpp  > 2   &   1

O processo cpp é colocado em segundo plano com saída redirecionada para um arquivo chamado "2", o "e" comercial também é um separador de comando como o ponto e vírgula, então o próximo comando na linha é "1", que o shell não pode encontrar.

    
por 27.10.2015 / 08:08