./gitlab-deploy/.gitlab-deploy.staging.sh:第 8 行:“0”:语法错误:预期操作数(错误标记为“0”)

Posted

技术标签:

【中文标题】./gitlab-deploy/.gitlab-deploy.staging.sh:第 8 行:“0”:语法错误:预期操作数(错误标记为“0”)【英文标题】:./gitlab-deploy/.gitlab-deploy.staging.sh: line 8: “0”: syntax error: operand expected (error token is "“0”") 【发布时间】:2021-04-22 21:28:29 【问题描述】:

我正在用 bash 编写脚本,但在部署到我的 ec2 时出现此错误:

这是我的代码:

# !/bin/bash
#Get servers list
set -f
string=$QA_DEPLOY_SERVER
array=($string//,/ )
#Iterate servers for deploy and pull last commit
for i in “$!array[@]”; do
  echo “Deploy project on server $array[i]”   
  ssh ubuntu@$array[i] "cd /opt/bau && git pull origin master"
done

脚本有什么问题,我该如何解决?非常感谢。

【问题讨论】:

你说错误在第16行,但你没有告诉我们这是哪一行。 也许您在变量中有空格,您可以在其中进行不带引号的参数扩展。使用-x 运行您的脚本进行检查。 嗨,所以错误发生在:“echo “Deploy project on server $array[i]”行,更新了我的问题。 代码有“智能引号”,这些是否也在您的实际代码中?比较 “”"" 是的,这些都在我的代码中。我一直在关注这篇文章:lucabecchetti.medium.com/… 【参考方案1】:

谢谢@BenjaminW

我不得不更改导致脚本出现问题的“智能引号”。从 “” 更改为 "" 解决了这个问题。

下面是我更新的脚本

for i in "$!array[@]"; do
  echo "Deploy project on server $array[i]"
  ssh ubuntu@$array[i] "cd /opt/bau && git pull origin master"
done


【讨论】:

以上是关于./gitlab-deploy/.gitlab-deploy.staging.sh:第 8 行:“0”:语法错误:预期操作数(错误标记为“0”)的主要内容,如果未能解决你的问题,请参考以下文章