Shell混用引发的任务无法启动

2014-11-24 14:43:48 · 作者: · 浏览: 15

在使用bash shell时,我们有这样的场景:


env.sh -- 定义公共的变量


run1.sh -- 定义运行代码


run2.sh -- 定义运行代码




如果env.sh中的内容是根据具体的run*.sh作变化,那么就需要给env.sh中传入变量。


很多人可能会采用这种方式,




场景模拟:


env.sh:




run1.sh:



执行命令:


sh run.sh start


结果:


core
core
invoke core-service


debian 6:


core


start


invoke core-service






分析:




表面现象问题出在:




根本:


debian默认使用的:






处理意见:


1.shell尽量用各个都兼容的方式书写,这样可移植性比较强


2.如果明确使用的shell,尽量在头部表明,这样执行./方式执行时能识别具体的shell


3.如果用具体的shell加脚步方式执行的话,建议明确shell脚步的解析器,如dash xx.sh 或者 bash xx.sh