J'ai défini certaines variables d'environnement dans un terminal, puis j'exécute mon script. Comment puis-je extraire les variables du script? J'ai besoin de connaître leurs valeurs. En les désignant simplement par $MY_VAR1
ne fonctionne pas; c'est vide.
Si les variables sont vraiment des variables d'environnement (c'est-à-dire qu'elles ont été exportées avec export
) dans l'environnement qui appelle votre script, alors elles seraient disponibles dans votre script. Qu'ils ne le soient pas suggère que vous ne les avez pas exportés, ou que vous exécutez le script à partir d'un environnement où ils n'existent tout simplement pas même en tant que variables Shell.
Exemple:
$ cat script.sh
#!/bin/sh
echo "$hello"
$ sh script.sh
(une ligne de sortie vide puisque hello
n'existe nulle part)
$ hello="hi there"
$ sh script.sh
(toujours seulement une ligne vide en sortie comme hello
est seulement une variable Shell, pas une variable d'environnement)
$ export hello
$ sh script.sh
hi there
Alternativement, pour définir la variable d'environnement uniquement pour ce script et non dans l'environnement appelant:
$ hello="sorry, I'm busy" sh script.sh
sorry, I'm busy
$ env hello="this works too" sh script.sh
this works too
Vous devez vous assurer d'exporter les variables d'environnement auxquelles vous souhaitez avoir accès dans votre script avant d'appeler le script. C'EST À DIRE:
Unix> export MY_TEMP=/tmp
Unix> some_script.sh
Maintenant, some_script.sh aurait accès à $ MY_TEMP - lorsque vous appelez un script Shell, vous obtenez un nouvel environnement, avec uniquement des variables exportées, sauf si vous le "sourcez" en précédant la commande de script avec un point (".") Et un espace, puis le nom de votre script:
Unix> . some_script.sh # runs in current environment
Astuce de débogage: incluez vers le haut de votre script la commande set
pour voir quelles variables votre script peut voir.