yes*_*nth 4 bash scripts jenkins
下面是我的 Jenkins Pipeline 阶段
stage ('Import') {
steps {
sshagent([sshCredentials]) {
sh '''
#!/bin/bash
sh -x ETL_AUTOMATION/Scripts/export.sh
'''
Run Code Online (Sandbox Code Playgroud)
构建输出:-
[[ RMO_TST12 == ]]
ETL_AUTOMATION/Scripts/export.sh: 17: ETL_AUTOMATION/Scripts/export.sh: [[: not found
Run Code Online (Sandbox Code Playgroud)
if 脚本中的条件:-
if [[ "$SOURCE_FOLDER" == "" ]]; then
echo "SOURCE_FOLDER not specified... exiting"
exit 1
fi
Run Code Online (Sandbox Code Playgroud)
我#!/bin/bash在我的脚本中也提到过。
请帮助我,我真的被困在这里。
ter*_*don 10
你在跑步sh -x ETL_AUTOMATION/Scripts/export.sh。这意味着export.sh正在运行sh而不是bash。在 Ubuntu 上,sh是一个简单的 POSIX shell dash,它不支持[[构造,这是bash一回事。因此,只需更改您的脚本,使其使用bash而不是sh. 我根本不知道 Jenkins 语法,但我怀疑您想要以下之一:
sshagent([sshCredentials]) {
sh '''
ETL_AUTOMATION/Scripts/export.sh
'''
Run Code Online (Sandbox Code Playgroud)
或者,如果您export.sh不能执行:
sshagent([sshCredentials]) {
sh '''
bash ETL_AUTOMATION/Scripts/export.sh
'''
Run Code Online (Sandbox Code Playgroud)
或者,也许只是:
sshagent([sshCredentials]) {
bash '''
ETL_AUTOMATION/Scripts/export.sh
'''
Run Code Online (Sandbox Code Playgroud)
或者,您可以进行更改export.sh,使其不使用仅限 bash 的功能:
if [ -z $SOURCE_FOLDER ]; then
echo "SOURCE_FOLDER not specified... exiting"
exit 1
fi
Run Code Online (Sandbox Code Playgroud)