Я хочу проанализировать переменную (в моем случае это версия комплекта разработчика), чтобы сделать ее .
свободной ( ). Если version='2.3.3'
желаемый результат есть 233
.
Я попробовал, как показано ниже, но его нужно .
заменить другим персонажем, дающим мне 2_3_3
. Было бы хорошо, если tr . ''
бы сработало.
1 VERSION='2.3.3'
2 echo "2.3.3" | tr . _
bash
text-processing
prayagupd
источник
источник
echo "2.3.3" | tr -d .
.VERSION='2.30.3100'
? Независимо от того, что только что.
удалено со всеми ответами здесь.Ответы:
Нет необходимости выполнять внешнюю программу. Манипуляции
bash
со строками могут справиться с этим (также доступно вksh
(откуда это происходит) иzsh
):(В руководствах по этим оболочкам вы можете найти это в разделе расширения параметров.)
источник
${string//substring/replacement}
очевидно, отсутствие последней косой черты и строки замены интерпретируются как удаление . Смотрите здесь .man bash
это ясно сказано в разделе « Расширение параметров оболочки »: «${parameter/pattern/string}
(…) Если строка пуста, совпадения шаблона удаляются, а/
следующий шаблон может быть опущен»."1.0.0"
и я хотел только номер, поэтому следуйте тому, что предложил @manatwork, я изменил:"${VERSIONNUM//'"'}"
однако я вставляю даже' '
потому, что в противном случае он не распознал бы""
подобную строку для взлета."
присутствует в значении? Я боюсь, что это считается новым вопросом, но попробуйте просто избежать двойной цитаты:"${VERSIONNUM//\"}"
pastebin.com/3ECDtkwH-ash
тоже!По хронологическому порядку:
тр / СЕПГ
CSH / Tcsh
POSIX оболочки:
ksh / zsh / bash / yash (и busybox
ash
при сборке сASH_BASH_COMPAT
)ЗШ
источник
В дополнение к успешным ответам уже существует. То же самое может быть достигнуто
tr
с помощью--delete
опции.Который будет выводить:
233
источник
--delete
флаг не распознается, но вы можете использовать-d
вместо неговы должны попробовать
sed
вместоsed 's/\.//g'
источник
Это будет возвращать только цифры, независимо от того, какие другие символы присутствуют
источник
Perl
питон
Если
$VERSION
только содержит цифры и точки, мы можем сделать что-то еще короче:(будьте осторожны, это уязвимость внедрения кода, хотя
$VERSION
может содержать любой символ).AWK
Или это:
источник