未找到ENDSSH命令



我正在写一个jenkins管道jenkinsfile,在脚本子句中,我必须ssh到一个盒子并运行一些命令。我认为这个问题与我在引号中使用的嫉妒有关。我得到一个ENDSSH命令没有发现错误,我不知所措。如有任何帮助,不胜感激。

stage("Checkout my-git-repo"){
steps {
script {
sh """
ssh -o StrictHostKeyChecking=accept-new -o LogLevel=ERROR -o UserKnownHostsFile=/dev/null -i ${JENKINS_KEY} ${JENKINS_KEY_USR}@${env.hostname} << ENDSSH
echo 'Removing current /opt/my-git-repo directory'
sudo rm -rf /opt/my-git-repo
echo 'Cloning new my-git-repo repo into /opt'
git clone ssh://${JENKINS_USR}@git.gitbox.com:30303/my-git-repo
sudo mv /home/jenkins/my-git-repo /opt
ENDSSH
"""
}
}
}

-bash: line 6: ENDSSH: command not found

我个人不熟悉jenkins,但我想问题是ENDSSH之前的空白

分隔符前不允许有空格。

(https://linuxize.com/post/bash-heredoc/)

尝试删除缩进:

stage("Checkout my-git-repo"){
steps {
script {
sh """
ssh -o StrictHostKeyChecking=accept-new -o LogLevel=ERROR -o UserKnownHostsFile=/dev/null -i ${JENKINS_KEY} ${JENKINS_KEY_USR}@${env.hostname} << ENDSSH
echo 'Removing current /opt/my-git-repo directory'
sudo rm -rf /opt/my-git-repo
echo 'Cloning new my-git-repo repo into /opt'
git clone ssh://${JENKINS_USR}@git.gitbox.com:30303/my-git-repo
sudo mv /home/jenkins/my-git-repo /opt
ENDSSH
"""
}
}
}

或者确保空格仅为制表符,并将<<替换为<<-:

在重定向操作符<<-后面加上一个减号,将导致所有错误要忽略的前导制表符。这允许你使用在shell脚本中编写here-文档时缩进。领先的不允许使用空白字符,只允许使用制表符。

相关内容

  • 没有找到相关文章

最新更新