当前位置: 首页 > 工具软件 > dockersh > 使用案例 >

docker中启动容器时CMD调用的sh脚本中if命令报未预期的符号 if[[的解决办法

纪实
2023-12-01

最近通过Dockerfile编写镜像,CMD中调用的是sh脚本(start.sh)进行启动容器,通过docker run启动时,启动不成功,进行docker logs 容器ID,发现报错为:未预期的符号 if [[
我直接在外部linux系统调用执行start.sh是成功的,通过docker exec 进入容器,在容中调用start.sh也未报错,命令中需要启动的程序都成功启动。脚本直接执行没问题,通过docker run却报错,百思不得其解。
start.sh中报错代码段如下

if [[ -e /home/dc/testnn-aaa.zip ]];then
	rm -rf /home/testnn-aaa
	unzip -q -o -d /home testnn-aaa.zip
	echo "unzip zip finished"	
else 
	echo "dc zip not exist"
fi

经过查阅比较,因为我的start.sh在报错语句之前也有if语句,但是没报错,发现两处区别为第一处if使用的是单[],将代码改为[],则成功,修改如下:

if [ -e /home/dc/testnn-aaa.zip ];then
 类似资料: