为了首先导出 VAR 变量,最合乎逻辑且可行的方法是 source 变量:
. ./export.bash
或
source ./export.bash
现在,当从主 shell 回显时,它可以工作了:
echo $VAR
HELLO, VARIABLE
我们现在将重置 VAR:
export VAR=""
echo $VAR
现在我们将执行一个脚本来获取变量,然后取消设置它:
./test-export.sh
HELLO, VARIABLE
--
.
代码:文件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 作业,我会像下面的控制台一样添加它...对于命令部分仍然值得怀疑:这是从 shell 运行的方式:
在您的命令提示符下(只要 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 file:
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
}
Source你的 .bashrc 文件,你可以随时像上面那样做......
不管怎样,回到它的其余部分......
这使它全局可用,然后执行脚本...
只需将其回显并在回显上运行导出!
文件export.bash
#!/bin/bash
echo "VAR=HELLO THERE"
现在在脚本或您的控制台中运行:
export "$(./export.bash)"
试试:
echo $VAR
HELLO THERE
只要您知道使用上述方法在另一个脚本中期望什么,就可以有多个值:
文件export.bash
#!/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
.
以及自动分配的最终最终更新,请阅读变量:
./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
脚本:
文件 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