簡體   English   中英

如何在 Jenkins 多行 shell 腳本中使用 bash 變量

[英]How to use bash variables in Jenkins multi-line shell script

我沒有成功嘗試在 Jenkins 管道中使用 bash 變量。

我的第一次嘗試

sh """#!/bin/bash
    for file in *.map; do
        filename=`basename $file .map`
        echo "##### uploading ${$filename}"

        curl  -X POST ${SERVER_URL}/assets/v1/sourcemaps \
              -F service_name="${SERVICE_NAME}" \
              -F service_version="${revision}" \
              -F bundle_filepath="${main_url}${filename}" \
              -F sourcemap="@${filename}.map" &
    done
    wait
"""

導致異常: MissingPropertyException: No such property: file

第二次嘗試,看到這個答案后https://stackoverflow.com/a/35047530/9590251

sh """#!/bin/bash
    for file in *.map; do
        filename=`basename \$file .map`
        echo "##### uploading \$filename"

        curl  -X POST ${SERVER_URL}/assets/v1/sourcemaps \
              -F service_name="${SERVICE_NAME}" \
              -F service_version="${revision}" \
              -F bundle_filepath="${main_url}\$filename" \
              -F sourcemap="@\$filename.map" &
    done
    wait
"""

簡單地省略了 bash 變量。 所以 $filename 是空的。

在這種情況下,我需要如何對 bash 變量進行屬性編碼?

嘗試這個:

sh """#!/bin/bash
    set -x    

    for file in *.map; do
        filename="\$(basename "\$file" .map)"
        echo "Uploading \$filename"

        curl  -X POST "${SERVER_URL}/assets/v1/sourcemaps" \
              -F service_name="${SERVICE_NAME}" \
              -F service_version="${revision}" \
              -F bundle_filepath="${main_url}\$filename" \
              -F sourcemap="@\${filename}.map" &
    done
    wait
"""

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM