El script de la shell no está enviando la salida al archivo.
Cuando ejecuto el siguiente comando en la terminal, el stderr
y stdout
se envían al archivo output.txt
tal como esperaría.
/usr/bin/time -v ls -al &>> output.txt
Sin embargo, cuando pongo este comando en un script de shell, la salida se muestra en la terminal y el contenido de output.txt
está vacío. Aquí está el script equivalente:
#!/bin/sh
/usr/bin/time -v ls -al &>> output.txt
exit
Ejecuto el script usando ./script.sh
. ¿Por qué este script no se comporta como esperaría? He intentado reemplazar el comando con: { /usr/bin/time -v ls -al ; } &>> output.txt
, pero eso tampoco funciona.
¡Gracias de antemano por cualquier ayuda!
davy.ai
El problema con el script de shell dado está en los operadores de redirección
&>
. Estos son caracteres codificados en HTML de los símbolos&
y>
, los cuales no se interpretan como se desea en el script de shell.Para redirigir tanto
stderr
comostdout
al archivooutput.txt
en el script de shell, la sintaxis correcta es:Entonces el script corregido sería:
Esto debería funcionar como se espera y redirigir tanto
stderr
comostdout
al archivooutput.txt
al ejecutar el script con./script.sh
.