Для експорту змінної VAR спочатку найбільш логічним і, здається, працюючим способом є джерело змінної:
. ./export.bash
або
source ./export.bash
Тепер, коли лунає з головної оболонки, вона працює
echo $VAR
HELLO, VARABLE
Зараз ми скинемо VAR
export VAR=""
echo $VAR
Тепер ми виконаємо скрипт для джерела змінної, а потім скасуємо її:
./test-export.sh
HELLO, VARABLE
--
.
код: 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
Ось один із способів
ВВАГА: Примітка: Експорт обмежується сценарієм, який виконує експорт у вашій головній консолі - так що, як робота з cron, я додав би її як консоль, як показано нижче ... для командної частини все ще сумнівно: ось як би ви запустіть із своєї оболонки:
У вашому командному рядку (до тих пір, поки export.bash має кілька значень відлуння)
IFS=$'\n'; for entries in $(./export.bash); do export $entries; done; ./v1.sh
HELLO THERE
HI THERE
кіт v1.sh
#!/bin/bash
echo $VAR
echo $VAR1
Тепер, поки це для вашого використання - ви можете в будь-який час зробити доступними змінні для ваших сценаріїв, зробивши bash псевдонім на зразок цього:
myvars ./v1.sh
HELLO THERE
HI THERE
echo $VAR
.
додайте це до свого .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
}
джерело вашого файлу bashrc, і ви можете робити, як вище, будь-коли ...
Як би там не було,
Це зробило його доступним у всьому світі, а потім виконав сценарій.
просто відлучіть його, а потім запустіть експорт на ехо!
котячий експорт.баш
#!/bin/bash
echo "VAR=HELLO THERE"
Тепер у сценарії чи консолі запустіть:
export "$(./export.bash)"
Спробуйте:
echo $VAR
HELLO THERE
Кілька значень, якщо ви знаєте, що ви очікуєте в іншому сценарії, використовуючи вищевказаний метод:
котячий експорт.баш
#!/bin/bash
echo "VAR=HELLO THERE"
echo "VAR1=HI THERE"
кішка 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
Тепер результати
./test-export.sh
round 1
HELLO THERE
HI THERE
round 2
.
і остаточне остаточне оновлення для автоматичного присвоєння читання 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
Сценарій: 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