我们很多时候需要将一个大功能的shell脚本分在不同的文件里,这样能起到条理清晰,多次复用的好处。
但是有一个问题不得不提出来,就是单个shell里面设置的环境变量在引用者里面是无效的。
举例说明:
- a.sh的内容,我们在a中执行b
#!/usr/bin/sh
b.sh
echo $test_a
- b.sh的内容,我们设置了一个环境变量,或者说变量。
#!/usr/bin/sh
export test_a=ok;
- 结果如下:
[osstest:/oradata/olcomtest$]a.sh
ok
[osstest:/oradata/olcomtest$]
可见b中可以输出了正常的值,而a中则无法引用,这是shell的本有的特点。
但是我们如何能达到一个环境变量设置的文件多次使用呢。
答案是:我们将b.sh中的文件内容在a中逐行执行, 注意如果b中存在多行一个单位的脚本则无效了。
例子如下:
#!/usr/bin/sh
##定义配置文件的存放目录
envFile=./setenv.sh;
echo "设置配置文件中的配置,配置文件为:${envFile}";
sleep 2;
while read line
do eval $line;
echo $line;
done < $envFile;
echo "环境变量设置完成,5秒后将启动程序";
sleep 1;
echo "5";
sleep 1;
echo "4";
sleep 1;
echo "3";
sleep 1;
echo "2";
sleep 1;
echo "1";
##启动程序
./NEA035 NEA035
这样我们的NEA035程序就能使用setenv.sh中的环境变量了。