Possíveis combinações corretas de redirecionamento de E / S

1
sqlite -echo test.sqlite < test44.sql > test44.out 1>&2.

sqlite -echo test.sqlite < test44.sql > test44.out 2>&1.

Apesar de trocar os dois redirecionadores de E / S, a saída não foi diferente.

    
por kvk30 28.06.2016 / 09:21

1 resposta

1

Com 1>&2 você redireciona a saída padrão para onde quer que o erro padrão esteja ocorrendo. Isso não é feito com frequência.

Com 2>&1 você faz o oposto, o que é mais comum.

Fazendo isso:

$ echo "hello world" >hello.out 1>&2
hello world

$ cat hello.out

Eu recebo "hello world" no fluxo de erros, mas >hello.out também cria um arquivo hello.out vazio (ou o trunca se existir).

É o último redirecionamento na linha que "ganha", mas o arquivo é criado quando o redirecionamento é analisado da esquerda para a direita, antes de o comando ser executado.

No seu caso (aqueles . no final das linhas de comando que você tem é provavelmente um erro de digitação, certo?):

$ sqlite -echo test.sqlite <test44.sql >test44.out 1>&2

Isso deve funcionar de maneira equivalente ao meu teste echo acima, desde sqlite (ou pelo menos sqlite3 no OpenBSD com o qual estou testando), envia os comandos SQL executados para a saída padrão.

    
por 28.06.2016 / 10:01

Tags