问题:
A脚本(/):
./b/run.sh
./c/run.sh
B脚本(/b/):
java -jar ./b.jar &
C脚本(/c/):
java -jar ./c.jar &
执行A脚本出现错误
找不到b.jar、c.jar
如何让B、C脚本不继承A脚本的环境变量
找不到jar的原因:
因为是A脚本直接调用子脚本,导致子脚本的运行环境为A脚本的环境,所以在B脚本和C脚本中“./”的实际路径为“/”而非“/b/”或“/c/”。
解决方案:
1、A脚步中使用“cd”命令切换环境
cd ./b/
./run.sh
cd ../c/
./run.sh
注:此方法可以不用动子脚本的任何内容,也可以让子脚本的依赖性减小到最小
2、使用参数和子脚本函数化
a、子脚本中将需要执行的内容进行函数化,并可传入路径参数;
b、子脚本中提供全局变量path = './'
c、在函数中判断是否有有传入参数,若没有传入参数就使用子脚本的全局变量path
注:此方法更符合编程逻辑思维,且扩展性好,但复杂化了脚本程序和增大了依赖性

被折叠的 条评论
为什么被折叠?



