Afin d'exporter la variable VAR en premier, la façon la plus logique et qui semble la plus efficace consiste à rechercher la variable:
. ./export.bash
ou
source ./export.bash
Maintenant, en écho depuis le shell principal, cela fonctionne
echo $VAR
HELLO, VARABLE
Nous allons maintenant réinitialiser VAR
export VAR=""
echo $VAR
Nous allons maintenant exécuter un script pour générer la variable, puis la désactiver:
./test-export.sh
HELLO, VARABLE
--
.
le code: cat test-export.sh
#!/bin/bash
# Source env variable
source ./export.bash
# echo out the variable in test script
echo $VAR
# unset the variable
unset VAR
# echo a few dotted lines
echo "---"
# now return VAR which is blank
echo $VAR
Voici une façon
S'IL VOUS PLAÎT NOTE: Les exportations sont limitées au script qui exécute les exportations dans votre console principale - pour autant qu'un travail cron je l'ajouterais comme la console comme ci-dessous ... pour la partie commande encore discutable: voici comment vous feriez courir depuis votre shell:
Sur votre invite de commande (tant que l'export.bash a plusieurs valeurs d'écho)
IFS=$'\n'; for entries in $(./export.bash); do export $entries; done; ./v1.sh
HELLO THERE
HI THERE
chat v1.sh
#!/bin/bash
echo $VAR
echo $VAR1
Maintenant, tant que c'est pour votre usage - vous pouvez rendre les variables disponibles pour vos scripts à tout moment en faisant un alias bash comme ceci:
myvars ./v1.sh
HELLO THERE
HI THERE
echo $VAR
.
ajoutez ceci à votre .bashrc
function myvars() {
IFS=$'\n';
for entries in $(./export.bash); do export $entries; done;
"$@";
for entries in $(./export.bash); do variable=$(echo $entries|awk -F"=" '{print $1}'); unset $variable;
done
}
sourcez votre fichier bashrc et vous pouvez faire comme ci-dessus à tout moment ...
Quoi qu'il en soit, revenons au reste ..
Cela l'a rendu disponible globalement puis a exécuté le script.
il suffit de l'écho, puis d'exporter sur l'écho!
chat export.bash
#!/bin/bash
echo "VAR=HELLO THERE"
Maintenant dans le script ou votre console:
export "$(./export.bash)"
Essayer:
echo $VAR
HELLO THERE
Plusieurs valeurs tant que vous savez à quoi vous vous attendez dans un autre script en utilisant la méthode ci-dessus:
chat export.bash
#!/bin/bash
echo "VAR=HELLO THERE"
echo "VAR1=HI THERE"
cat test-export.sh
#!/bin/bash
IFS=$'\n'
for entries in $(./export.bash); do
export $entries
done
echo "round 1"
echo $VAR
echo $VAR1
for entries in $(./export.bash); do
variable=$(echo $entries|awk -F"=" '{print $1}');
unset $variable
done
echo "round 2"
echo $VAR
echo $VAR1
Maintenant les résultats
./test-export.sh
round 1
HELLO THERE
HI THERE
round 2
.
et la dernière mise à jour finale pour attribuer automatiquement lire les VARIABLES:
./test-export.sh
Round 0 - Export out then find variable name -
Set current variable to the variable exported then echo its value
$VAR has value of HELLO THERE
$VAR1 has value of HI THERE
round 1 - we know what was exported and we will echo out known variables
HELLO THERE
HI THERE
Round 2 - We will just return the variable names and unset them
round 3 - Now we get nothing back
Le script: cat test-export.sh
#!/bin/bash
IFS=$'\n'
echo "Round 0 - Export out then find variable name - "
echo "Set current variable to the variable exported then echo its value"
for entries in $(./export.bash); do
variable=$(echo $entries|awk -F"=" '{print $1}');
export $entries
eval current_variable=\$$variable
echo "\$$variable has value of $current_variable"
done
echo "round 1 - we know what was exported and we will echo out known variables"
echo $VAR
echo $VAR1
echo "Round 2 - We will just return the variable names and unset them "
for entries in $(./export.bash); do
variable=$(echo $entries|awk -F"=" '{print $1}');
unset $variable
done
echo "round 3 - Now we get nothing back"
echo $VAR
echo $VAR1