En passant un script shell variable à un autre script shell
Je suis en train d'essayer d'accéder à une variable de script à partir d'un autre script par exemple,
script1.sh:
export a=10
export b=20
echo "testing"
exit
script2.sh:
. script1.sh
echo $a
Le problème ici est de ses en mesure d'accéder à la variable " a " de la script1 dans script2 mais son exécution toutes les commandes écrit dans script1.sh qui est gênant. Je veux juste qu'à l'accès de l'exportation des variables dans script1 et ne souhaitez exécuter les commandes dans script1 tout en appelant que dans script2.
Aide gentiment!
Merci,
Karthik
Vous devez vous connecter pour publier un commentaire.
L'affectation d'une variable est une commande. Sauf si vous êtes prêt à écrire un bash analyseur de bash, ce que vous voulez ne peut pas être fait.
Ce que vous essayez de le faire (seulement obtenir les variables à partir d'un autre script, sans exécuter les commandes) n'est pas possible.
Voici une solution de contournement:
Extrait de la déclaration de la variable et l'initialisation d'un troisième fichier, qui est ensuite utilisé par les deux.
commune de vars:
script1.sh:
script2.sh:
Si votre affectations de variables sont jamais dans le exacte forme indiquée ci-dessus, qui est
ensuite, vous pouvez extraire ces missions avec
grep
eteval
les résultats. Votre script2.sh serait alorsMais cela est très fragile et peut se casser dans beaucoup de façons. Mettre les affectations de variables dans un troisième script obtenus par les deux comme d'autres l'ont suggéré est beaucoup plus sûr.
Cela peut se briser si vous avez des paramètres de variables à l'intérieur des instructions conditionnelles, ou si votre exporté variables dépendent d'autres non exportée variables qui les a raté, ou si vous définissez et d'exporter les variables séparément; et si vous arrive d'être en utilisant la substitution de commande dans votre exportations ceux qui voudraient encore se faire rouler avec leurs effets secondaires possibles.
Ce sont tous potentiellement problématiques.
Je suis d'accord avec Ignacio Vazquez-Abrams.
pas beaucoup que vous pouvez faire à ce sujet.
Une probable solution serait de séparer les définitions de variables à un troisième script, qui pourraient être utilisés comme configuration script. Donc, à la fois script1 et script2 serait
source
que l'un, l'utilisation de la var qui y sont définies.script2.sh:
Vous pouvez passer la variable à partir d'un script à un autre en passant la variable comme paramètre.
Bien sûr, cela signifie que le Script B sera appelé par le Script A. Script B aurez besoin de vérifier que le paramètre passé n'est pas vide.
Je suis d'accord avec "Ignacio Vazquez-Abrams" c'est une bonne réponse à votre question.
Mais j'ai une autre solution pour vous, où vous n'avez pas l'exportation de vos variables. le concept est basé sur : vous utilisez le shell de Connexion pour exécuter le script au lieu d'une nouvelle coque.
Permet de dire que votre script1.sh est :
maintenant exécuter votre script dans votre shell de connexion :
Exemple:
Maintenant, si vous voulez accéder à la variable a dans votre script, il sera accessible sans échec.
Exemple
Permet de dire que votre script2.sh est :
exécuter: