繁体   English   中英

传递给 bash 脚本的环境变量在 function 内为空

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM