我们很多时候需要将一个大功能的shell脚本分在不同的文件里,这样能起到条理清晰,多次复用的好处。
但是有一个问题不得不提出来,就是单个shell里面设置的环境变量在引用者里面是无效的。
举例说明:
- a.sh的内容,我们在a中执行b
#!/usr/bin/sh b.sh echo $test_a
- b.sh的内容,我们设置了一个环境变量,或者说变量。
- 结果如下:
可见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中的环境变量了。
https://www.iteye.com/blog/xuelianbobo-2098221