以下是我的 Jenkins Pipeline 阶段
stage ('Import') {
steps {
sshagent([sshCredentials]) {
sh '''
#!/bin/bash
sh -x ETL_AUTOMATION/Scripts/export.sh
'''
构建输出:-
[[ RMO_TST12 == ]]
ETL_AUTOMATION/Scripts/export.sh: 17: ETL_AUTOMATION/Scripts/export.sh: [[: not found
if
脚本中的条件:-
if [[ "$SOURCE_FOLDER" == "" ]]; then
echo "SOURCE_FOLDER not specified... exiting"
exit 1
fi
#!/bin/bash
我在我的脚本中也提到过。
请帮帮我,我真的被困在这里了。
答案1
您正在运行sh -x ETL_AUTOMATION/Scripts/export.sh
。这意味着正在由而不是export.sh
运行。在 Ubuntu 上,是一个名为 的简单 POSIX shell ,它不支持构造,这是一个问题。因此,只需更改您的脚本,使其使用而不是启动。我根本不了解 Jenkins 语法,但我怀疑您想要其中之一:sh
bash
sh
dash
[[
bash
bash
sh
sshagent([sshCredentials]) {
sh '''
ETL_AUTOMATION/Scripts/export.sh
'''
或者,如果你的export.sh
不可执行:
sshagent([sshCredentials]) {
sh '''
bash ETL_AUTOMATION/Scripts/export.sh
'''
或者,也许简单一点:
sshagent([sshCredentials]) {
bash '''
ETL_AUTOMATION/Scripts/export.sh
'''
或者,您可以进行更改,export.sh
以使其不使用仅限 bash 的功能:
if [ -z $SOURCE_FOLDER ]; then
echo "SOURCE_FOLDER not specified... exiting"
exit 1
fi