【发布时间】:2021-10-11 03:11:21
【问题描述】:
我正在尝试在不使用源代码的情况下使变量退出 shell 脚本。 变量在 shell 脚本中声明为
export varA=3
然后我使用./filename.sh 运行脚本
我想要
echo $varA
在终端中返回 3(即 varA 的值)。所以将变量的作用域扩展到脚本之外
总结一下:如何让shell脚本里面的变量存在外面。
提前谢谢你
【问题讨论】:
-
不使用“来源”?你没有。贝壳的设计使这不起作用。如果由于某种原因您无法获取脚本本身,则让它输出另一个文件,该文件仅包含 VAR=some_value 之类的行,然后 source that
-
哦,好吧,所以我也不能只对一个变量使用源代码? source 是否仅适用于文件?
-
通常,当您运行脚本时,它会在子 shell 中执行,这意味着在与您调用它的终端不同的环境中运行。 (它会在您启动脚本时复制环境变量,但即使脚本更改它们也不会将它们复制回来。)当您获取脚本时,它会在与您的终端相同的环境中运行该脚本(或您调用它的任何地方)从)。因此,如果您想要一个脚本来更新您的环境变量,您必须获取它。
-
运行 bash 脚本不像尝试在大多数编程语言中调用函数那样工作。如果你试图让它成为那样,你的生活将是痛苦的。如果您只想返回一个值,则让脚本将其打印到标准输出并将输出放入变量中。
-
另外,您永远不需要在变量上使用“源”。您只需设置变量。该概念仅适用于运行脚本。无来源:不同的环境。来源:相同的环境。
标签: bash shell terminal scope sh