@artemk1ter

Как осуществить рандомный выбор функции и последующее ее выполнение?

Существует три функции:
function1() {
    echo пукпук
}
function2() {
    echo пукпук2
}
function3() {
    echo пукпук3
}


Как можно рандомно выбрать функцию?

В питоне это делается так:

from random import choice

def func1():
	print("пукпук")

def func2():
	print("пукпук2")	

def func3():
	print("пукпук3")

getrandom = choice([func1, func2, func3])
getrandom()

Как это сделать в bash?
  • Вопрос задан
  • 419 просмотров
Решения вопроса 1
@xibir
getRandom()
{
   case $(($RANDOM % 3)) in
   0) function1 ;;
   1) function2 ;;
   2) function3 ;;
   esac
}
echo `getRandom`
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
"function$((1 + ($RANDOM % 3)))"

Встроенная в bash функция $RANDOM при каждом вызове вернёт случайное 16-битное целое от 0 до 32767. Можно брать остаток от деления его на 3 – будет 0, 1 или 2 – и добавив единицу приклеить к слову "function" – получится имя нужной функции. Остаётся её вызвать – просто эта строка в bash скрипте, собственно, и вызывает полученную функцию.

Проверки
$ ./rand.sh 
пукпук
$ ./rand.sh 
пукпук
$ ./rand.sh 
пукпук3
$ ./rand.sh 
пукпук3
$ ./rand.sh 
пукпук3
$ ./rand.sh 
пукпук3
$ ./rand.sh 
пукпук3
$ ./rand.sh 
пукпук2
$ ./rand.sh 
пукпук2
$ ./rand.sh 
пукпук2
$ ./rand.sh 
пукпук2
$ ./rand.sh 
пукпук
$ cat ./rand.sh 
#!/bin/bash

function1() {
    echo пукпук
}
function2() {
    echo пукпук2
}
function3() {
    echo пукпук3
}

"function$((1 + ($RANDOM % 3)))"
Ответ написан
Комментировать
saboteur_kiev
@saboteur_kiev Куратор тега bash
software engineer
eval
eval "function$((RANDOM%3+1))"

или вообще напрямую
"function$((RANDOM%3+1))"
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы