Herdar redirecionamentos IO de um script para outro

1

Quando eu redireciono a saída de um script dentro de um script, espero que o redirecionamento seja aplicado ao script chamado, bem como ao programa chamado dentro dele.

A:

./B 2>> error.log

B:

./executable

Executando A saídas para stdout e stderr . Eu esperaria que stderr fosse para error.log . Aparentemente estou errado.

Por que a saída de B é redirecionada quando chamada de A?

Como posso ter certeza de que a saída do subíndice (B) e do executável seja redirecionada como A está tentando tentar?

Aqui está o meu caso de teste real:

redir.sh:

#!/bin/bash
./other_script.sh 2>> error.log

other_script.sh:

#!/bin/bash
./redirection

redirection compilado de redirection.c com gcc -o redirection redirection.c :

#include <stdio.h>

#define NB_LOOPS (10)

int main(void)
{
    int i;
    for (i = 0; i < NB_LOOPS; ++i) {
        fprintf(stdout, "stdout %d\n", i);
        fprintf(stderr, "stderr %d\n", i);
    }
    return 0;
}
    
por Gauthier 20.05.2015 / 11:47

0 respostas