在与另一个脚本相同的行上定义shell脚本变量
发布时间:2020-12-15 21:32:56 所属栏目:安全 来源:网络整理
导读:我遇到了ksh脚本中的行,这些脚本声明了一个变量并在同一行上提供了另一个 shell脚本.例如: MYVARIABLE="abc" . ~core/script.sh 这是否会产生与单独声明它们不同的行为?例如: MYVARIABLE="abc". ~core/script.sh 解决方法 如果是 MYVARIABLE="abc" . ~cor
我遇到了ksh脚本中的行,这些脚本声明了一个变量并在同一行上提供了另一个
shell脚本.例如:
MYVARIABLE="abc" . ~core/script.sh 这是否会产生与单独声明它们不同的行为?例如: MYVARIABLE="abc" . ~core/script.sh 解决方法
如果是
MYVARIABLE="abc" . ~core/script.sh MYVARIABLE仅在source(.)命令的持续时间内设置为abc.所以它将在~core / script.sh中的代码范围内. 如果是 MYVARIABLE="abc" . ~core/script.sh 它将在当前shell /脚本的范围内以及~core / script.sh的范围内设置. 尝试运行第一个,然后回显$MYVARIABLE,看它仍然是空的(假设它开始为空).运行后者,再次回显,你会看到它的值是在当前shell中设置的. 编辑: 请注意,在这两种情况下,MYVARIABLE都在~core / script.sh的范围内可见,但这只是因为您正在寻找脚本.如果您要运行可执行文件(甚至是可执行的shell脚本)而不是源代码,则行为会有所不同. MYVARIABLE=foo /usr/local/bin/some_executable 将在执行时将变量放在范围内,但是 MYVARIABLE=foo /usr/local/bin/some_executable 不会在范围内有变量.为了将它传播到可执行文件/子shell,您必须将其导出: MYVARIABLE=foo export MYVARIABLE /use/local/bin/some_executable 在比ksh(bash,zsh)更新的Bourne派生shell中,您可以组合赋值和导出: export MYVARIABLE=foo 但这在ksh中不起作用;你需要两个陈述. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |