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;
}
Tags bash io shell-script io-redirection