es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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!

Tags:  , , , ,

Answer

  1. Avatar for 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 como stdout al archivo output.txt en el script de shell, la sintaxis correcta es:

    /usr/bin/time -v ls -al &> output.txt
    

    Entonces el script corregido sería:

    #!/bin/sh
    /usr/bin/time -v ls -al &> output.txt
    exit
    

    Esto debería funcionar como se espera y redirigir tanto stderr como stdout al archivo output.txt al ejecutar el script con ./script.sh.

Comments are closed.