我有两个脚本A和B.脚本B有一些要在A中使用的变量。我还必须通过脚本A调用脚本B.我应该怎么做呢?
答案 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