Devo adicionar “& 2” no final do comando echo?

2

Por exemplo

#!/bin/bash
INT=-5
if [[ "$INT" =~ ^-?[0-9]+$ ]]; then
    echo "INT is an integer."
else
    echo "INT is not an integer." >&2
    exit 1
fi

Quando eu excluir "> & 2". Não há nada diferente. Por que preciso adicionar "> & 2"

    
por yuxuan 14.08.2015 / 00:00

2 respostas

6

A diferença é:

echo "INT is an integer."

escreve para o padrão e

echo "INT is not an integer." >&2

escreve para o erro padrão.

No mundo do Unix, stdout é geralmente usado quando tudo está funcionando corretamente e stderr é geralmente usado para imprimir mensagens quando algo dá errado.

Por padrão, stdout e stderr imprimem na tela. A principal diferença é que os operadores > e | capturam stdout por padrão, mas não stderr .

Então, se você tivesse seu script no meio de um pipeline, INT is an integer. continuaria no pipeline e INT is not an integer imprimia em sua tela, em vez de ir para o pipeline.

    
por 14.08.2015 / 00:41
1

Essa string mescla o padrão em erro padrão. Você faz isso e quer ver a saída no erro padrão. Não tenho certeza por que você acha que seria necessário.

    
por 14.08.2015 / 00:02

Tags