【问题标题】:./gitlab-deploy/.gitlab-deploy.staging.sh: line 8: “0”: syntax error: operand expected (error token is "“0”")./gitlab-deploy/.gitlab-deploy.staging.sh:第 8 行:“0”:语法错误:预期操作数(错误标记为“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/…

标签: bash git ubuntu amazon-ec2 gitlab


【解决方案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


【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-02
    • 1970-01-01
    • 1970-01-01
    • 2017-12-08
    • 1970-01-01
    相关资源
    最近更新 更多