我有一個 gitlab ci/cd 管道,其中包含以下內容:
my_script:
stage: stage
script:
- cd dir
- ls -d */ > lines.txt
- while read line; do cd $line; pwd; cd ..; done < lines.txt
“目錄”中可以有一個或多個目錄,我希望能夠動態 CD 到它們中。這里的問題是cd $line. 我相信它一直試圖讀取 $line 的 CI/CD 變數,該變數不存在。但是我希望它讀取在 while 回圈中設定的 $line 的本地 shell 變數。
我也嘗試用它包圍它,'$line'但沒有用。
uj5u.com熱心網友回復:
變數 $line 在傳遞到運行器的實際 shell 之前被評估(到一個空字串)。
您可以將整個命令用引號括起來,作為引數傳遞給 shell 解釋器:
- sh -c 'while read line; do cd $line; pwd; cd ..; done < lines.txt'
反正用Gitlab的yaml編程是個壞習慣。最好在您的專案中創建一個腳本。它更具可讀性、便攜性和錯誤安全性。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/383720.html
標籤:壳 GitLab 持续集成 gitlab-ci gitlab-ci-runner
上一篇:將分隔欄位轉換為具有名稱和值的行
