Задана, например, такая строка:
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