Script de shell usando variável para armazenar o redirecionamento de saída

0

Eu tenho um script 'simple' que executa alguns comandos, eu normalmente só quero ver alguns ecos me informando onde ele está. Mas ocasionalmente eu preciso de uma saída detalhada que me mostre a saída de alguns dos comandos sendo executados.

Exemplo para uso normal

echo "Simple message"
wget 'http://example.com' > /dev/null

Opção detalhada

echo "Simple message"
wget 'http://example.com'

Eu pensei em usar uma variável para armazenar o redirecionamento de saída

output=""
if [ -z "$1" ]
  then
    output="> /dev/null"
fi
echo "Simple message"
wget 'http://example.com' $output

O problema é que não parece estar funcionando, então eu adicionei -x ao shebang e a saída me mostra

wget 'http://example.com' '>' /dev/null

Como posso impedir que o > seja citado?

Há mais coisas acontecendo no script original do que um simples wget, este é apenas um pequeno exemplo.

    
por Simon Tiplady 17.10.2017 / 11:57

1 resposta

0

Redirecionar o wget para stdout permite que você altere seu script para ficar assim:

#!/bin/bash
output="/dev/stdout"
if [ -z "$1" ]; then
output="/dev/null"
fi
echo "simple message"
wget -qO- 'http://example.com' > "$output"

Dessa forma, sempre que seu primeiro parâmetro estiver vazio, ele sempre será redirecionado para / dev / null, caso contrário, a saída será para stdout.

Se você não quisesse que ele saísse para o stdout, eu sugeriria criar um arquivo (que será sempre o mesmo) e depois ler a partir dele depois do wget.

    
por 17.10.2017 / 12:36