지정된 명령 목록 내에서 하나의 명령을 무작위로 실행하는 방법은 무엇입니까? 시동음, 배경 화면 또는 명령을 임의로 선택하는 데 도움이됩니다.
일반적으로 다음과 같이 실행 명령이 있으면 어떻게 무작위를 얻습니까?
#!/bin/bash
<command_1>
<command_2>
<command_3>
.
.
.
<command_n>
그런 다음 스크립트가 실행될 때 위의 가능성 중에서 하나의 명령 만 무작위 로 실행 하고 싶습니다 !
그렇게하는 방법?
답변
변수 $RANDOM
(실제로 bash 함수)는 0에서 32767 사이의 난수를 반환합니다.
일반적으로 범위를 일부 숫자로 나누어 범위를 제한하고 나머지를 예로들 수 있습니다.
# output a random number 0 to 3
echo $((RANDOM % 4))
이 간단한 예제에서는 32768로 똑같이 나누지 않는 모든 제수 (예 : 2의 거듭 제곱이 아닌 것)에 대해 약간 편향되어 있지만 시나리오에서 나는 당신이 어려움을 겪지 않을 것이라고 생각합니다 약간의 편견에 의해.
임의의 파일을 선택하려면 파일 이름을 다음과 같이 지정하십시오.
file0.jpg
file1.jpg
file2.jpg
file3.jpg
그리고 당신은 무작위로 하나를 선택할 수 있습니다
# output a random file from file0.jpg to file3.jpg
echo "file$((RANDOM % 4)).jpg"
답변
@neon_overload 답변 (사용 RANDOM
) 에 따르면 다음과 같이 스크립트를 예제로
넣을 수 있습니다 RANDOM
(4 명령)
#!/bin/bash
random_selection=$((RANDOM % 4))
case $random_selection in
0)
<command_1>
;;
1)
<command_2>
;;
2)
<command_3>
;;
3)
<command_4>
;;
esac
답변
컴퓨터에서 생성 된 사이트가 아닌 외부 사이트를 통해 임의성을 원한다면이 스크립트를 사용할 수 있습니다.
curl "http://www.random.org/integers/?num=1&min=$1&max=$2&col=1&base=10&format=plain&rnd=new"
rand (MIN) (MAX)로 실행 (/ usr / bin / rand로 저장한다고 가정)
curl이 아직 설치되지 않은 경우 curl을 먼저 설치해야합니다 (sudo apt-get install curl).
답변
GNU coreutilsshuf
에서 명령을 사용할 수 있습니다 .
NAME
shuf - generate random permutations
SYNOPSIS
shuf [OPTION]... [FILE]
shuf -e [OPTION]... [ARG]...
shuf -i LO-HI [OPTION]...
DESCRIPTION
Write a random permutation of the input lines to standard output
예:
$ shuf -i 1-5
4
1
2
5
3
$ shuf -e Debian Ubuntu Trisquel
Trisquel
Debian
Ubuntu
이제 하나의 무작위 항목을 얻으려면 -n 1
첫 번째 출력을 사용할 수 있습니다 .
1-100의 난수를 인쇄하는 예 :
$ shuf -i 1-100 -n 1
37
file
다음 내용을 가지고 있다면 :
$ cat file
command-1
command-2
command-3
command-4
command-5
다음과 같은 작업을 수행 할 수도 있습니다.
$ shuf file -n 1
command-3