Linux: bash, получить случайный символ из заранее заданной строки
Задана, например, такая строка:
PGSTRING='#$%@!?0'
Задача - получить из строки с паттерном случайный символ.
STRLEN=`expr length "$PGSTRING"`
Если вывести переменную
STRLEN
для строки выше, будет следующее:Len: 7
expr
есть в coreutils
, так что должен быть практически вездеПолучить случайное число из заданного диапазона можно командой
shuf
, например:shuf -i x-x1 -n1
где:
x-x1
- диапазон чисел-nX
- X
- количество цифр в числе.Получаем случайное число:
RNUM=`shuf -i 1-$STRLEN -n1`
Вывод:
R Num: 3
Отправляем строку на консоль:
echo -e -n "$PGSTRING"
И перенаправляем команде
cut
:Для того, чтобы вырезать командой cut символ, или группу символов из строки, нужно указать первый и последний символ. Например:
cut -c1-5
Применяем все вышесказанное:
RCHAR=`echo -e -n "$PGSTRING"|cut -c$RNUM-$RNUM`
Вывод:
Char: %
getrandchar() #$1 - pattern_string
{
STRLEN=`expr length "$1"`
RNUM=`shuf -i 1-$STRLEN -n1`
RCHAR=`echo -e -n "$1"|cut -c$RNUM-$RNUM`
}
Использование:
getrandchar $PGSTRING
Копия функции на PasteBin
Это репост с сайта http://tolik-punkoff.com
Оригинал: https://tolik-punkoff.com/2023/02/07/lin