Преамбула
Задана, например, такая строка:
PGSTRING='#$%@!?0'
Задача — получить из строки с паттерном случайный символ.
Bash: получаем длину строки
STRLEN=`expr length "$PGSTRING"`
Если вывести переменную STRLEN
для строки выше, будет следующее:
Len: 7
expr
есть в coreutils
, так что должен быть практически везде
Bash: получаем случайное число из заданного диапазона
Получить случайное число из заданного диапазона можно командой 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