LinuxForum.Fans
Тема

Изучаю bash (не могу решить маленькую задачку)

Автор: aivs 22 сообщений 8537 просмотров
#173783
aivs написал:
Спасибо, а если через if, или какой вариант более правильный?

ИМХО через sed приятней всего получается...
stroka=$(echo $stroka | sed -r ' /^[0-9]+%$/!d; s/([0-9]+)%/\1/' ) # пустая строка, если на вход подали что-то не то
через if можно регэкспом, аналогично float'у, как я показывал выше.

#182860
aivs написал:
Если введена строка [цифры]% # например 15%
то преобразовать ее к виду [только цифры]

откусить последний процент? баш это может и без всяких седов:
[console]doc@dt:~$ x=abcde
doc@dt:~$ echo ${x}
abcde
doc@dt:~$ echo ${x%e}
abcd
[/console]
в данном случае процент необходимо экранировать:
[console]doc@dt:~$ x=abcde%
doc@dt:~$ echo ${x}
abcde%
doc@dt:~$ echo ${x%\%}
abcde
[/console]

aivs написал:
Вижу это как то так:

case

не нужно

Fat-Zer написал:
ИМХО через sed приятней всего получается...
stroka=$(echo $stroka | sed -r ' /^[0-9]+%$/!d; s/([0-9]+)%/\1/' ) # пустая строка, если на вход подали что-то не то
через if можно регэкспом, аналогично float'у, как я показывал выше.

не нужно.

Войдите или зарегистрируйтесь, чтобы ответить.