GNU/Linux >> Tutoriales Linux >  >> Linux

¿Compartir variables entre múltiples scripts de shell?

Estoy tratando de resumir varios scripts de shell dentro de un script de shell grande, como este:

#!/bin/sh
bash script1.sh
bash script2.sh
bash script3.sh

Todos los scripts comparten las mismas variables var y var2 . Quería eliminar las definiciones de variables de los scripts de shell individuales y colocarlos en el script de shell grande, de modo que cuando cambie el valor de las variables solo tenga que hacerlo una vez.

Sin embargo, cuando lo hago

#!/bin/sh
var1="1"
var2="2"
bash script1.sh
bash script2.sh
bash script3.sh

las variables no son reconocidas por las referencias $var1 y $var2 en los scripts de shell individuales.

Disculpe si la pregunta se ha hecho antes, soy nuevo en la creación de secuencias de comandos en general y no sabía qué buscar.

También sería bueno saber cómo podría recorrer los scripts con múltiples entradas de variables, como

var1="1 2 3 4 5"
var2="a b c d e"
for i in $var1;do for j in $var2;do
script1.sh
script2.sh
done;done

Respuesta aceptada:

Cuando ejecuta los scripts 1-3 dentro de su script principal, cada uno se ejecuta dentro de su propio sub-shell, por lo que no reconocen las variables definidas en su shell principal. Usar export para hacer que las variables estén disponibles para las subcapas:

#!/bin/sh
export var1="1"
export var2="2"
bash script1.sh
bash script2.sh
bash script3.sh

Una alternativa (relevante para su segunda pregunta) sería pasar las variables a los scripts como parámetros posicionales:

#!/bin/sh
var1="1"
var2="2"
bash script1.sh "$var1" "$var2"
bash script2.sh "$var1" "$var2"
bash script3.sh "$var1" "$var2"

Dentro de los scripts 1-3, estas variables estarían disponibles como $1 y $2 respectivamente.


Linux
  1. ¿Existen convenciones de nomenclatura para las variables en los scripts de Shell?

  2. Parámetros especiales de Bash explicados con 4 scripts de Shell de ejemplo

  3. Parámetros posicionales de Bash explicados con 2 scripts de shell de ejemplo

  4. ¿Cómo escribir una cadena de varias líneas usando Bash con variables?

  5. Ejecute todos los scripts de shell en la carpeta

Escribir comentarios en Bash Scripts

.bashrc frente a .bash_profile

Shell Scripting para principiantes:cómo escribir Bash Scripts en Linux

Bash Beginner Series #2:Comprender las variables en Bash Shell Scripting

Cómo hacer eco de una nueva línea en Bash Shell Scripts

Comprender las variables en Bash Shell en Linux