首页 > 解决方案 > Bash 字符串参数打印有不必要的撇号

问题描述

我正在 ubuntu 18 操作系统上编写 BASH 脚本。我正在对字符串进行操作(追加、剪切),之后,我想将其用作 docker 命令的参数。问题是它返回带有撇号,我只需要没有这些的值。

if [[ "${TESTIM_LABEL}" =~ "," ]]; then
    IFS=','
    read -a strarr <<< "$TESTIM_LABEL"
    LABELS=""
    prefix=" --label "
    for val in "${strarr[@]}";
    do
      LABELS+=${prefix}${val}
      echo "$LABELS"

    done
        printf "$LABELS"
  else
      printf "im outside the IF"
      LABELS="--label ${TESTIM_LABEL}"
fi

在这个 IF 语句上,当条件为真并且我在 IF 内时,打印的 LABELS 变量的值不带撇号,但是当我稍后将此参数用作较长命令的一部分时,它会插入撇号

例子:

    RESULT=$(docker run --rm -e rpLaunch="${RP_LAUNCH_NAME}" -e rpTeam="${RP_TEAM}" -e rpUuid="${rp_uuid}" -e rpBranchNameTag="${BRANCH_NAME}" -e rpDescription="${RP_DESCRIPTION}" -v $2:/opt/testim-runner ${TESTIM_DOCKER} \
  --token ${TESTIM_TOKEN} \
  --project "${TESTIM_PROJECT}" \
  ${LABELS} 

输出将是(插入到 IF "xxx,yyy" 之后):

docker run --rm -e rpLaunch=master/testim/@arion_ab_testing -e rpTeam=SocialArion -e rpUuid= -e rpBranchNameTag=master -e rpDescription=http://jenkins-prod-search.internalk.com/job/ui-pull-request/3127/ -v /home/centos/jenkins/workspace/ui-pull-request:/opt/testim-runner testim/docker-cli --token Dt9kFOtOhNcMum2gZjvnapOpGyq8vgreEnZOJF2nR9SeCJaRGE --project bJFghGy6Jo9yvtOO3ZiO ' --label xxx --label yyy'

'--label xxx --label yyy'周围的撇号 需要删除。

我怎么做?

标签: stringbashdocker

解决方案


像这样删除它们:

test="'test'"

#with
$ echo "$test"
'test'

#without
$ echo "${test//\'}"
test

推荐阅读