我正在尝试在 Jenkins (1.638) 的执行外壳上编写一个简单的 If 语句。我看着类似问题 但它仍然不起作用(见下面的结果输出)。我尝试了 [[ 和 [ 以及相关空格,看来 Jenkins 的处理方式与常规 bash 不同。我什至在与 if 和 ; 相同的行上尝试了 then 。任何想法 ?
if [[ "${BRANCH_NAME}" == "master" ]] || [[ "${BRANCH_NAME}" == "master_dev" ]]
then
./runUnitTests.sh ${REPOSITORY_NAME} ${BASE_BUILD_CORE} ${BRANCH_NAME} ${BUILD_NUMBER} || echo "The npm may fail but the report exists"
fi
詹金斯的结果是
- [[升级==主]] /tmp/hudson11669113852432623.sh:2:/tmp/hudson11669113852432623.sh:[[:未找到
- [[ 升级 == master_dev ]] /tmp/hudson11669113852432623.sh: 2: /tmp/hudson11669113852432623.sh: [[: 未找到 [核心] $ /bin/sh -xe /tmp/hudson7252947297480815560.sh
答案1
您是否考虑过在您的 shell 中包含 bash shebang?
#!/bin/bash -xe
if [[ "${BRANCH_NAME}" == "master" ]] || [[ "${BRANCH_NAME}" == "master_dev" ]]
....
这将迫使 Jenkins 使用本地 bash 解释器。