关于gitlab-ci.yam配置任务使用for循环报错语法错误的解决方法

在配置gitlab-ci.yml时遇到for循环引发的语法错误问题,即使命令在本地和gitlab容器内正常运行。解决方案是在$前添加转移符,以及在for循环内的语句和变量用双引号括起来,从而避免被解析为环境变量,成功解决问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 最近在编写gitlab-cy.yam配置任务时,发现在gitlab中使用for循环会报语法错误

sshpass -p "xx" ssh root@xx.x.xx.xx "for i in {1..6}; do echo $i >> /voc/for_test; done"

 ​​​​​

但这条命令并没有什么问题,无论我复制在操作的服务器还是gitlab容器里面这条命苦都不会报相应的错误,但就是在gitlab-ci.yam运行时,报语法错误,经过几小时的排错,发现在$前面加上转移符,命令就能正常运行。但具体原因也不是很清楚,有可能gitlab-cy.yam把$后面当作gitlab里的环境变量,但是系统里并没有这个环境变量。

在$前加上\ 正常运行

sshpass -p "xx" ssh root@xx.x.xx.xx "for i in {1..6}; do echo \$i >> /voc/for_test; done"

但后面发现有些语句加上转义符还是继续报错

- sshpass -p "xxx" ssh -o StrictHostKeychecking=no root@x.x.x.x "for i in {1..6}; do sed -i "s/childId:\ waitToConfig/childId:\ 5\$((\${i}-1))/g" /voc/sichuan01-0\$i-5\$((\${i}-1))/prd/pa
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值