Não é possível redirecionar a saída de IO no FreeBsd

0

Eu tenho isso:

$ echo $SHELL
/bin/sh

$ uname -a
FreeBSD  11.0-RELEASE-p8

E isso funciona:

sudo bash my_script.sh some_arg

Mas isso não:

sudo bash my_script.sh some_arg >& /dev/null

Erro:

-sh: Syntax error: Bad fd number

No Linux com o bash padrão como um shell, isso funciona bem.

Como consertar isso?

No script eu tenho isto:

#!/usr/local/bin/bash

# other stuff
    
por Ko32mo 13.06.2017 / 17:18

3 respostas

5

bash suporta isso, mas você declara explicitamente que seu shell atual não é bash , mas sim sh , que é um shell diferente.

    
por 13.06.2017 / 18:22
3

bash suporta >& , mas /bin/sh não (pelo menos não para redirecionar para um arquivo).

Sua linha de comando é interpretada por /bin/sh antes de ser passada para sudo e bash .

Eu não posso testar isso em bash (mas funciona com outros shells) - você pode tentar usar a opção -c com uma string entre aspas:

sudo bash -c "my_script.sh some_arg >& /dev/null"
    
por 13.06.2017 / 18:20
0

A sintaxe correta seria:

sudo my_script.sh some_arg > /dev/null 2>&1
    
por 14.06.2017 / 17:56