我正在嘗試sed在 Gitlab CI 作業期間使用變數更新檔案的內容。該變數來自上一階段的工件version。如果簡化,我的作業看起來像這樣:
build-android-dev:
stage: build
dependencies:
- version
only:
- mybranch
before_script:
- PUBSPEC_VERSION="`cat app-pubspec-version`"
- echo "Pubspec version - $PUBSPEC_VERSION"
script:
- >
sed -i -E "s/^(version: )(. )$/\1${PUBSPEC_VERSION}/g" pubspec.yaml
- cat pubspec.yaml | grep version
interruptible: true
tags:
- macmini-flutter
不幸的是,作業失敗并顯示以下錯誤訊息:
$ sed -i -E "s/^(version: )(. )$/\1${PUBSPEC_VERSION}/g" pubspec.yaml
sed: 1: "s/^(version: )(. )$/\14 ...": \1 not defined in the RE
Cleaning up project directory and file based variables
00:00
ERROR: Job failed: exit status 1
PUBSPEC_VERSION來自工件的內容如下:
$ echo "Pubspec version - $PUBSPEC_VERSION"
Pubspec version - 4.0.0 2
我能夠在我的本地 Ubuntu (Linux) 機器上執行命令而沒有任何問題:
$ export PUBSPEC_VERSION=4.0.0 2
$ sed -i -E "s/^(version: )(. )$/\1${PUBSPEC_VERSION}/g" pubspec.yaml
$ cat pubspec.yaml | grep version
version: 4.0.0 2
啟動 Gitlab Runner 的遠程機器是 MacOS。不確定是否重要。
正如你所看到的,我還在我的 CI 配置中使用折疊樣式,就像這里提出的那樣,以避免不正確的冒號解釋。
我搜索了解決該問題的解決方案,但似乎我不需要在正則運算式中轉義(盡管我也嘗試過)組括號,因為我使用擴展正則運算式。
所以我堅持下去......
PS 我無權訪問遠程 MacOS 的外殼。
uj5u.com熱心網友回復:
是MacOS。
-i接受后綴引數,-E要創建的備份后綴也是如此。余會想要:
- sed -i '' -E 's/...'
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/480255.html
上一篇:為什么pync.notifyformac不起作用?(Python)
下一篇:-D在npm安裝
