加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

在与另一个脚本相同的行上定义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中不起作用;你需要两个陈述.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读