我有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”调用函数my_func。我使用以下命令启动脚本:
MY_VARIABLE=YES source myscript.sh; my_func
以下是输出:
after my_func
YES
my_func start
my_func end
my_func()中的变量$ MY_VARIABLE为空。我希望my_func()中的变量$ MY_VARIABLE等于“是”。
答案 0 :(得分:3)
您仅为运行MY_VARIABLE
的环境设置source
。完成后,my_func
将在您的原始环境中运行。如果您希望my_func
可以访问,请使用
export MY_VARIALBE=YES; source my script.sh; my_func
bash
没有闭包;当您定义my_func
时,shell在定义中未使用MY_VARIABLE
的当前值。它只是创建一个函数,该函数在被调用时会在调用范围内查找该值。