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.

¿Existe alguna forma de imprimir comandos de shell interpolados y al mismo tiempo conservar las redirecciones?

Supongamos que tengo el siguiente programa de shell.

#!/bin/sh

FOO="foo"
echo $FOO | cat

Quiero generar otro programa de shell que haga lo mismo que este, excepto que todas las variables de shell hayan sido sustituidas. Por ejemplo,

#!/bin/sh

echo "foo" | cat

Sé que puedo acercarme si ejecuto el programa anterior usando #!/bin/sh -x, pero esa salida no conserva las redirecciones. En su lugar, obtengo

+ FOO=foo
+ echo foo
+ cat
foo

¿Alguna idea?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Sí, una posible solución es utilizar la sustitución de comandos. En lugar de asignar el valor de la variable FOO y luego enviarlo a cat, podemos sustituir directamente el valor de FOO utilizando $(FOO) y envolverlo entre comillas para manejar cualquier carácter especial. Aquí está el código modificado:

    #!/bin/sh
    FOO="foo"
    echo "$(FOO)" | cat
    

    Después de sustituir la variable, el programa shell será:

    #!/bin/sh
    echo "foo" | cat
    

    Esto mostrará foo y conservará la redirección.

Comments are closed.