项目中写了几个shell脚本,其中A脚本以服务形式存在,开机自启。A脚本会调用judgeBoxType.sh脚本,根据该脚本中函数的返回值,来执行不同的操作。如下所示:
脚本写好后,调用bash A.sh,执行完全符合预期。但是,以服务的形式启动时,却失败了,查看了日志,调用judgeBoxType.sh返回值为127。可是judgeBoxType.sh脚本,不会反回127。上网查了一下资料,解释如下:
judgeBoxType.sh本身是没有问题的,而且可执行,另外也没有调用别的脚本文件。因此这里有很大的可能原因是A脚本以服务形式被启动后,运行脚本路径与judgeBoxType.sh不在同一个文件夹下,另外,judgeBoxType.sh所在文件夹不再环境变量列表中,因此./judgeBoxType.sh这种形式,系统不知道文件在哪里。照着这个思路,对脚本稍微做一下调整,如下:
重启服务,这次没毛病了