Proceso de sustitución
He echado un vistazo alrededor de lo que me desconcierta y solo encontré esto:¿Algunos programas no aceptan la sustitución de procesos para los archivos de entrada?
que está ayudando parcialmente, pero realmente me gustaría entender la historia completa. Noté que algunos de mis scripts R dan resultados diferentes (es decir, incorrectos) cuando uso la sustitución de procesos.
Intenté señalar el problema con un caso de prueba:
Este script:
#!/usr/bin/Rscript
args <- commandArgs(TRUE)
file <-args[1]
cat(file)
cat("\n")
data <- read.table(file, header=F)
cat(mean(data$V1))
cat("\n")
con un archivo de entrada generado de esta manera:
$ for i in `seq 1 10`; do echo $i >> p; done
$ for i in `seq 1 500`; do cat p >> test; done
me lleva a esto:
$ ./mean.R test
test
5.5
$ ./mean.R <(cat test)
/dev/fd/63
5.501476
Pruebas adicionales revelan que algunas líneas se pierden ... pero me gustaría entender por qué. ¿Read.table (escaneo da los mismos resultados) utiliza la búsqueda?
PD. con un archivo de prueba más pequeño (100) se reporta un error:
$./mean.R <(cat test3)
/dev/fd/63
Error in read.table(file, header = F) : no lines available in input
Execution halted
Agregue # 1: con una secuencia de comandos modificada que usa la exploración, los resultados son los mismos.