Fazendo um redirecionamento 2 & 1 dentro de um script

1

É possível executar um script de outro script e incluir um redirecionamento em um arquivo de log?

Estou tentando executar três scripts de um script maior. Um deles precisa ser executado "agora". Este é um exemplo do que devo fazer manualmente:

sample_script1.sh
at now
sample_script2.sh > sample_script2.log
2>&1
(CTRL + D)
tail -f sample_script2.log
sample_script3.sh

Eu tentei isso (assim como várias iterações diferentes com sintaxe diferente, particularmente com aspas):

sample_script_location="$HOME/sample_script.sh"
sample_script_log_location="$HOME/sample_script.log"
echo ""$sample_script_location" > "$sample_script_log_location" 2>&1" | at now

Quando executado conforme planejado, o processo manual coloca "SQL > SP2-0042: comando desconhecido" 2 > & 1 "" na parte inferior do arquivo de log. Quando faço isso com o script que canaliza o eco para um "agora", esta mensagem não aparece.

    
por mkingsbu 19.06.2015 / 15:22

1 resposta

1
{ echo a; echo b 1>&2; echo c 1>&2; } 2>&1
a
b
c

Você pode incluir alguns comandos em {} chaves. Veja help { .

Seu at now pode ser alimentado com o chamado here-document

sample_script1.sh
at now 2>&1 <<EOF
sample_script2.sh > sample_script2.log
EOF
tail -f sample_script2.log &
sample_script3.sh

Se você quiser colocar o stderr do script2 no log, precisará do 2>&1 antes do >sample_script2.log

sample_script1.sh
at now <<EOF
sample_script2.sh 2>&1 >sample_script2.log
EOF
tail -f sample_script2.log &
sample_script3.sh

O tail -f é executado até você cancelá-lo, portanto, você deve colocá-lo em segundo plano ou iniciá-lo como o último comando. Veja help bg .

    
por 23.06.2015 / 08:54