W celu eksportu poza zmienną VAR pierwszy najbardziej logiczne i wydaje pracy sposobem jest źródło zmiennej:
. ./export.bash
lub
source ./export.bash
Teraz gdy echa od osłony głównej działa
echo $VAR
HELLO, VARABLE
Będziemy teraz resetować VAR
export VAR=""
echo $VAR
Teraz wykonujemy skrypt do źródła zmiennej następnie rozbrojony to:
./test-export.sh
HELLO, VARABLE
--
.
kod: kot 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
Oto jeden sposób
UWAGA: Eksport ogranicza się do skryptu wykonującego eksport w głównej konsoli - tak długo, jak zadanie crona dodawałbym go jak konsolę jak poniżej ... dla części poleceń nadal wątpliwe: Oto jak chcesz uruchomić w powłoce z:
Na swoim wierszu poleceń (tak długo, jak export.bash ma wiele wartości echa)
IFS=$'\n'; for entries in $(./export.bash); do export $entries; done; ./v1.sh
HELLO THERE
HI THERE
koci v1.sh
#!/bin/bash
echo $VAR
echo $VAR1
teraz tak długo, jak to jest do użytku - można zrobić zmienne dostępne dla skryptów w dowolnym momencie, wykonując aliasu bash tak:
myvars ./v1.sh
HELLO THERE
HI THERE
echo $VAR
.
dodać do .bashrc
function myvars() {
IFS=$'\n';
for entries in $(./export.bash); do export $entries; done;
"[email protected]";
for entries in $(./export.bash); do variable=$(echo $entries|awk -F"=" '{print $1}'); unset $variable;
done
}
źródło plik .bashrc i można zrobić tak jak powyżej każdej chwili ...
Zresztą z powrotem do reszty to ..
ma to udostępniono go globalnie, a następnie wykonano skrypt.
po prostu wyślij go, a następnie uruchom eksport na echo!
kot export.bash
#!/bin/bash
echo "VAR=HELLO THERE"
Teraz wewnątrz skryptu lub twój bieg konsola:
export "$(./export.bash)"
Spróbuj:
echo $VAR
HELLO THERE
Wiele wartości tak długo jak wiesz czego oczekujesz w innym skrypcie przy użyciu powyższej metody:
kota export.bash
#!/bin/bash
echo "VAR=HELLO THERE"
echo "VAR1=HI THERE"
kot 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
Teraz wyniki
./test-export.sh
round 1
HELLO THERE
HI THERE
round 2
.
a ostateczna wersja ostateczna aktualizacja do automatycznego przypisywania odczytać zmienne:
./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
Skrypt: kot 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
Możesz spróbować użyć aliasu zamiast skryptu do zdefiniowania swojej zmiennej. – jdigital
Skrypt, nad którym pracuję, jest jakimś wirtualnym menedżerem java, wykonuję obliczenia, a następnie wyeksportuję plik $ JAVA_HOME do env i dołączam go do zmiennej PATH. – tarrsalah
Cóż, możesz zapisać informacje do pliku, a następnie ponownie je odczytać, ale pozyskiwanie wydaje się znacznie łatwiejsze. – jdigital