2脚本A和B.Script B有一些要在A中使用的变量。我应该如何处理它

时间:2011-10-28 12:14:50

标签: shell unix solaris

我有两个脚本A和B.脚本B有一些要在A中使用的变量。我还必须通过脚本A调用脚本B.我应该怎么做呢?

3 个答案:

答案 0 :(得分:1)

这听起来像你有可以从A或B读取的配置信息,如果它是简单的配置信息,那么它应该在第三个文件C中指定,它使用{{1来自A和B两者机制。

如果你试图从A调用B,在调用B中设置一个变量然后在A中读取该值,那么如果你使用的是标准. ./C,那么所有的变量都是在B的调用中设置不会被复制回A的环境。

脚本之间“共享变量”的最明智的方法是让被调用的脚本输出A需要使用的变量到临时文件中,然后在A结束运行时从A中获取。更复杂的方法涉及B将变量回显到可评估的字符串中,该字符串在例如A中评估。如果B包含:

./B

然后在A我做:

#!/bin/bash -p
echo var=22

我会得到输出output=$(./B) eval $output echo $var 。这是正确的做法,并且只应该依赖于在脚本之间传输的变量的简短列表。

让脚本共享变量的真正方法是使它们只包含函数,并拥有一个主脚本,在获取它们之后调用A和B中的函数,例如。

22

如果A中的代码依赖于B中的代码,那么通过获取它们,最终会得到一个在它们之间共享的单个名称空间,因此您可以从A中调用B中的函数,从B调用A中的函数。你这是违反功能层次结构,被认为是编码不好的。)

答案 1 :(得分:0)

Marge两个脚本一起?然后你将有一个varibles列表,所有的功能将在一个地方。 如果这两个脚本正在做一些非常不同的事情,那么试着让它们独立。

答案 2 :(得分:0)

尝试

 # cat B
 #!/bin/bash
 echo "Date is: `date`"

 # cat A
 #!/bin/bash
 echo "You are login as: `whoami`"
 echo "`/bin/sh ./B`" # exact path for the script file

输出:

  # ./A
  You are login as: root
  Date is: Thu Oct 17 02:56:36 EDT 2013