문자열을 grep하여 배열에 넣는 Bash 스크립트

문자열을 grep하여 배열에 넣는 Bash 스크립트

명령 출력을 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.

관련 정보