문자열을 파악하여 배열에 배치하는 Bash 스크립트

문자열을 파악하여 배열에 배치하는 Bash 스크립트

명령 출력을 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에서 시작한다는 점에 유의하면 산술에서는 배열 의 요소 수에 $(( ))대한 모듈로 값을 사용한다고 말합니다 .$RANDOMoutputs

관련 정보