Jenkins流水线中Bash脚本语法问题求助
脚本执行求助
我需要执行以下脚本:
sh """#!/bin/bash -xe source ${rcfile} serverName=$(openstack server list --name openstack-cluster-smoketest-${env.BUILD_NUMBER}-${hostname}) count=0 limit=6 while [ ! -z $serverName || $count -gt $limit ] do openstack server delete openstack-cluster-smoketest-${env.BUILD_NUMBER}-${hostname} count=$((count + 1)) sleep 10s serverName=$(openstack server list --name openstack-cluster-smoketest-${env.BUILD_NUMBER}-${hostname}) done if [ $count -eq $limit ]; then exit 1 fi """
相关说明:
- 我已经尝试过单引号和双引号的组合,清楚字符串插值需要使用双引号。
- 确认
source ${rcfile}操作完全正常,此前在另一个shell块中运行以下脚本无任何问题:
sh """#!/bin/bash -xe source ${rcfile} openstack server delete openstack-cluster-smoketest-${env.BUILD_NUMBER}-${hostname} """
- 另外,在source rcfile并创建名称为
openstack-cluster-smoketest-${env.BUILD_NUMBER}-${hostname}的实例后,单独运行以下脚本片段,能够成功获取Jenkins流水线阶段中的build_number和hostname:
sh """#!/bin/bash -xe source ${rcfile} openstack server list --name openstack-cluster-smoketest-${env.BUILD_NUMBER}-${hostname} """
提前感谢!
内容的提问来源于stack exchange,提问作者Adham Radwan
相关产品推荐
相关产品推荐

