Я хотел автоматизировать тегирование своих артефактов, и я написал простой сценарий оболочки, который извлекает версию из тега git (которая соответствует шаблону):
#!/bin/sh
regex="^RELEASE-(.*)$"
if [[ $1 =~ $regex ]]; then
echo -n "${BASH_REMATCH[1]}"
exit 0
else
exit 1
fi
Тогда я получилошибки при сборке с docker:latest
изображением, после некоторой борьбы я обнаружил, что по какой-то причине у этого изображения нет /bin/bash
, вместо этого они предпочитают /bin/ash
.
Проблема в том, что я не нашел замены для оператора регулярных выражений в ash
. После поиска в Google я нашел предложение сделать это с помощью sed, например:
echo -n "RELEASE-1.0.0" | sed 's/^RELEASE-\(.*\)$/\1/'
Однако, этот пример терпит неудачу эпично, потому что он печатает весь ввод, если регулярное выражение не соответствует ...
Есть ли разумная замена / исправление для этого оператора соответствия регулярному выражению?