[英]Environment variable passed to bash script is empty inside function
我有 bash 脚本:myscript.sh。 以下是内容:
#!/bin/bash
function my_func {
echo "my_func start"
echo $MY_VARIABLE # THIS PRINTS NOTHING
echo "my_func end"
}
function func2 {
}
echo "after my_func"
echo $MY_VARIABLE # this prints "YES"
我只想使用环境变量“MY_VARIABLE”从命令行调用 function my_func。 我用这个命令启动脚本:
MY_VARIABLE=YES source myscript.sh; my_func
这是 output:
after my_func
YES
my_func start
my_func end
my_func() 中的变量 $MY_VARIABLE 为空。 我希望 my_func() 中的变量 $MY_VARIABLE 等于“YES”。
您仅为source
运行的环境设置MY_VARIABLE
。 完成后, my_func
将在您的原始环境中运行。 如果您希望my_func
有权访问,请使用
export MY_VARIALBE=YES; source my script.sh; my_func
bash
没有闭包; 当您定义my_func
时, shell 没有在定义中使用MY_VARIABLE
的当前值。 它只是创建一个 function ,当被调用时,它会在调用 scope 中查找该值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.