shell脚本中的奇怪变量定义

时间:2014-08-08 03:13:53

标签: bash shell

test.sh:

#! /bin/sh
me=I ./test2.sh

test2.sh:

#! /bin/sh
echo $me

运行脚本1并打印:

[zhibin@szrnd1 sh]$ ./test.sh
I
[zhibin@szrnd1 sh]$ 

如图所示,变量" $ me"转移到" test2.sh"。

我没有在谷歌搜索中找到变量定义的这种用法,有人能告诉我哪里可以找到包含上述用法的教程?

很多!

2 个答案:

答案 0 :(得分:2)

由于已经提到了很多,我假设您正在寻找一些文档。我不确定有什么比BASH documentation更详细的内容:

  

任何简单命令或函数的环境都可以通过在参数赋值前添加前缀来临时扩充,如Shell参数中所述。这些赋值语句仅影响该命令所见的环境。

正如您通过实验所见,当您执行" A = B命令"时,它会运行命令,就好像"导出A = B"在该命令之前运行,然后A的值恢复到之前的命令完成之后。这是将一些环境传递给命令的一种非常方便的方法,同时确保脚本的其余部分不受影响。

答案 1 :(得分:2)

来自Environment上的bash文档:

  

任何简单命令或函数的环境都可以通过为参数赋值添加前缀来临时扩充,如Shell Parameters中所述。这些赋值语句仅影响该命令所见的环境。

因此,如果在命令之前放置变量赋值,则该命令将与这些环境变量一起运行。