簡體   English   中英

提取目錄時 shell 腳本中的錯誤替換錯誤

[英]Bad substitution error in shell script while extracting directory

運行以下 shell 腳本時出現替換錯誤。 (行號僅供參考):

第 11 行> SCENARIO_DIR="$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"

第 12 行> SCENARIO_PATH="${SCENARIO_DIR}/scenarios"

TeamCity 中的錯誤是|./k6-run-all.sh: line 12: syntax error: bad substitution

請注意,在本地運行時,我沒有收到此錯誤,並且場景路徑已正確提取。 但是當我在 TeamCity(在 Docker 上運行)上運行它時,它給了我上述錯誤。

我本地的場景路徑是: /Users/sonaliagrawal/Documents/antman/src/scenarios/full-card-visa

盡管錯誤是: //scenarios/full-card-visa ,但 TeamCity 中的場景路徑提取正確

嘗試的解決方案:由於在 TeamCity 中, SCENARIO_DIR 本身就是/因此我寫了一個 if then else 來處理它,但它無助於解決替換錯誤,它只是更正了/scenarios/full-card-visa的路徑。 我添加的代碼如下 -

SCENARIO_DIR="$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
echo "Scenario directory $SCENARIO_DIR"

SCENARIO_PATH=""
if [[ "$SCENARIO_DIR" = "/" ]]; then
   SCENARIO_PATH="/scenarios"
else
   SCENARIO_PATH="${SCENARIO_DIR}/scenarios"
fi

參考:如果有幫助,Dockerfile 如下:

FROM loadimpact/k6:0.34.1
COPY ./src/lib /lib
COPY ./src/scenarios /scenarios
COPY ./src/k6-run-all.sh /k6-run-all.sh
WORKDIR /
ENTRYPOINT []
CMD ["sh", "-c", "./k6-run-all.sh"]

這是因為您的腳本沒有作為 bash 腳本執行。 將以下內容放在 .sh 文件的頂部。

#!/bin/bash

暫無
暫無

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

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