Para ilustrar mi problema y mis preguntas, considere dos guiones.
Guión1.sh
#!/bin/sh test=1 echo $testGuión2.sh
#!/bin/sh $(Script1.sh)Cuando ejecuto Script1.sh desde la línea de comando directamente a través de ./Script1.sh, produce el resultado deseado.
1
Sin embargo, cuando ejecuto Script2.sh que llama a Script1.sh, aparece el siguiente mensaje de error:
Script2.sh: línea 1: 1: comando no encontrado
¿Piensa que el entero 1 es un comando por alguna extraña razón?
Encontré un trabajo barato que consiste en establecer una variable del primer script y pasarla al segundo script como parámetro, pero me gustaría entender por qué esto falla.
Además, cuando cambié el valor de mis variables de 1 a "algún texto", esperaría que mi eco imprimiera "algún texto" en la pantalla. Pero cuando llamo a Script2.sh (que en última instancia solo llama a Script1.sh) no imprime el eco en la pantalla. ¿Por qué es eso y cómo lo resuelvo para poder ver la salida de eco igual que si hubiera llamado a Script1.sh directamente?
Cualquier consejo sería muy apreciado.
Lo estás llamando mal al usar la sustitución de comandos. Simplemente use la source o una subcapa si lo desea:
. ./Script1.sh ( ./Script1.sh )El segundo es un poco redundante ya que siempre se ejecutará en otro shell de todos modos, por lo que tendría más sentido:
( . ./Script1.sh )