명령 출력을 grep하고 문자열을 배열에 배치하는 bash 스크립트를 만들고 매분마다 배열에서 1개의 문자열을 무작위로 선택하여 변수로 배치할 수 있는 방법을 찾고 있습니다. 무작위로 선택하는 시간을 구성할 수 있어야 합니다.
Command output:
string
string2
string3
이 모든 문자열을 배열에 배치하고 그중 하나를 무작위로 선택하여 변수로 배치합니다.
desired result:
strings -> array <- randomly selecting from array every 1 minute and placing string selected as variable for further use
답변1
Bash에서는 readarray
명령 대체를 사용하여 개행으로 구분된 출력을 배열로 캡처할 수 있습니다. 예를 들어:
readarray -t outputs < <(seq 10)
seq 10
내가 출력을 생성하는 데 사용한 곳입니다 . 그 결과는 다음과 같습니다.
$ declare -p outputs
declare -a outputs='([0]="1" [1]="2" [2]="3" [3]="4" [4]="5" [5]="6" [6]="7" [7]="8" [8]="9" [9]="10")'
매분마다 해당 요소 중 하나를 의사 무작위로 선택하려면 다음을 수행하십시오.
while :
do
element=$(( RANDOM % ${#outputs[@]} ))
var=${outputs[$element]}
sleep 60
done
bash 배열은 인덱스 0에서 시작한다는 점에 유의하면 산술에서는 배열 의 요소 수에 $(( ))
대한 모듈로 값을 사용한다고 말합니다 .$RANDOM
outputs