Невозможно увеличить номер сборки в файле - PullRequest
0 голосов
/ 31 мая 2018

Я хотел бы увеличить номер сборки в файле как часть процесса сборки.

Цель сценария - поиск .###'/* BUILD-NUMBER */, например:

console.log('Version 1.1.017'/* BUILD-NUMBER */);

Разобрать 017, добавить один, затем sprint его обратно.Вот код, который у меня есть:

perl -pe "s~\.([0-9]+)'/\* BUILD-NUMBER \*/~(sprintf('.%03d%c/* BUILD-NUMBER */', $1, 39))~e" < $U > $T

39 должен совпадать с %c, чтобы напечатать апостроф ', потому что я не мог понять, как вставить его буквально.(Это входит в скрипт bash.)

В любом случае, когда я запускаю вышеизложенное, оно возвращается:

console.log('Version 1.1.001'/* BUILD-NUMBER */);

Так что, я думаю, что это не номер.Я пробовал $0, $1, \g1 и т. Д., Но это возвращает некоторые странные вещи.Нигде не видно 17.

Кроме того, начальные нули в номере сборки заставят perl интерпретировать строку как восьмеричную?(Причина использования 017 в качестве контрольного примера, чтобы увидеть, вернется ли он как 016 или 018.)

1 Ответ

0 голосов
/ 31 мая 2018

Ваша проблема вызвана использованием "..." для переноса кода Perl в оболочку.Это заставит оболочку интерполировать свою переменную $1 в код до того, как Perl ее увидит.

Исправить:

perl -pe 's~\.([0-9]+)(?='\''/\* BUILD-NUMBER \*/)~sprintf ".%03d", $1 + 1~e'

Кстати, вот как вы получаете 'в строку '...' в оболочке:

  • ' - конец секции в кавычках
  • \' - литерал ' (обратный слеш экранирован)
  • ' - перезапустите указанный раздел

Я изменил ваше регулярное выражение, чтобы использовать упреждающий просмотр, чтобы не захватывать часть '/* BUILD-NUMBER */, что означает, что мне не нужно заменять ее обратнодюймы

016 не будут интерпретироваться как восьмеричные.Восьмеричное значение предполагается только для литералов в вашем исходном коде;в данных оно всегда принимается как десятичное число.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...