e teste ou teste 2 e 1

4

Eu li uma instrução usando &> para lidar com erros e dados

$ls -al test test2 test3 badtest &> test7
$ cat test7
ls: cannot access 'test': No such file or directory
ls: cannot access 'badtest': No such file or directory
-rw-r--r-- 1 me staff 78 Oct 28 19:07 test2
-rw-r--r-- 1 me staff  0 Oct 28 19:03 test3

No entanto, quando eu verifico Sintaxe obsoleta e preterida [Wiki Bash Hackers]

Recomenda 2>&1

$ ls -al test test2 test3 badtest > test7 2>&1

 $ cat test7
ls: cannot access 'test': No such file or directory
ls: cannot access 'badtest': No such file or directory
-rw-r--r-- 1 me staff 78 Oct 28 19:07 test2
-rw-r--r-- 1 me staff  0 Oct 28 19:03 test3

Qual padrão devo seguir

    
por avirate 28.10.2018 / 12:21

1 resposta

8

Isso depende de você decidir.

O bash shell entende &>file e >file 2>&1 como idênticos e você pode usar a antiga sintaxe como um atalho para escrever o último. Outras shells podem lançar um erro de sintaxe ou fazer algo inesperado com &> .

Se você somente escreve bash scripts (e não scripts para, por exemplo, /bin/sh ), então use all &> , mas se você estiver precisando ou precisando escrever Scripts> portáteis (scripts que precisam ser executados em /bin/sh ou que devem ser executáveis por qualquer shell sh , dos quais bash é um e ksh , zsh e dash são outros), então &> é uma das coisas que você deve evitar.

Todos os shells de sh -like implementam o padrão POSIX em termos de sintaxe e gramática , mas bash e outras shells também fornecem conveniências sintáticas como &> e extensões como matrizes e correspondência de expressão regular, etc., e alguns shells podem expandir o padrão POSIX de forma bastante diferente da maneira como o bash está fazendo.

Relacionados:

por 28.10.2018 / 12:30

Tags