GNU/Linux >> Tutoriels Linux >  >> Linux

Partage de variables sur plusieurs scripts shell ?

J'essaie de résumer plusieurs scripts shell dans un grand script shell, comme celui-ci :

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

Tous les scripts partagent les mêmes variables var et var2 . Je voulais supprimer les définitions de variables des scripts shell individuels et les placer dans le grand script shell à la place, de sorte que lorsque je modifie la valeur des variables, je n'ai à le faire qu'une seule fois.

Cependant, quand je le fais

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

les variables ne sont pas reconnues par les références $var1 et $var2 dans les scripts shell individuels.

Toutes mes excuses si la question a déjà été posée, je suis nouveau dans les scripts en général et je ne savais pas quoi rechercher.

Ce serait également bien de savoir comment je pourrais parcourir les scripts avec plusieurs entrées variables, telles que

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

Réponse acceptée :

Lorsque vous exécutez les scripts 1 à 3 dans votre script principal, ils sont chacun exécutés dans leur propre sous-shell, c'est pourquoi ils ne reconnaissent pas les variables définies dans leur shell parent. Utilisez export pour rendre les variables disponibles aux sous-shells :

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

Une alternative (pertinente pour votre deuxième question) serait de passer les variables aux scripts en tant que paramètres positionnels :

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

Dans les scripts 1 à 3, ces variables seraient alors disponibles sous la forme $1 et $2 respectivement.


Linux
  1. Définition des variables d'environnement du shell | Coque BASH

  2. Personnalisation du shell Bash

  3. Comment écrire une chaîne de plusieurs lignes en utilisant Bash avec des variables ?

  4. Exécutez tous les scripts shell dans le dossier

  5. Comment exécuter une commande plusieurs fois à l'aide du shell bash ?

Écrire des commentaires dans des scripts bash

.bashrc contre .bash_profile

Shell Scripting pour les débutants - Comment écrire des scripts Bash sous Linux

Comment savoir si une durée est supérieure à une heure sur plusieurs scripts shell ?

Fonctions dans les variables shell ?

Bash Beginner Series #2 :Comprendre les variables dans les scripts shell Bash