명령 출력을 grep하고 문자열을 배열에 넣을 수 있고 배열에서 1개의 문자열을 무작위로 선택하여(매분마다) 변수로 배치할 수 있는 bash 스크립트를 만드는 방법을 찾고 있습니다. 선택됨 시간을 구성할 수 있어야 합니다.
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")'
요소 중 하나가 1분마다 의사 무작위로 선택됩니다.
while :
do
element=$(( RANDOM % ${#outputs[@]} ))
var=${outputs[$element]}
sleep 60
done
Bash 배열은 인덱스 0에서 시작하고 $(( ))
산술 표현은 배열 $RANDOM
의 요소 수를 모듈로 로 사용합니다 outputs
.