Bash-Skript zum Greifen von Zeichenfolgen und Platzieren in einem Array

Bash-Skript zum Greifen von Zeichenfolgen und Platzieren in einem Array

Ich suche nach einer Möglichkeit, ein Bash-Skript zu erstellen, das die Befehlsausgabe grept und Zeichenfolgen in einem Array platziert und in der Lage ist, beispielsweise jede Minute eine zufällig ausgewählte Zeichenfolge aus dem Array auszuwählen und als Variable zu platzieren. Die Zeit für die zufällige Auswahl muss konfigurierbar sein.

Command output:
string
string2
string3

Platzieren Sie alle diese Zeichenfolgen in einem Array, wählen Sie zufällig eine davon aus und platzieren Sie sie als Variable

desired result:
strings -> array <- randomly selecting from array every 1 minute and placing string selected as variable for further use 

Antwort1

In Bash können Sie readarraymit der Befehlsersetzung durch Zeilenumbrüche getrennte Ausgaben in einem Array erfassen. Beispiel:

readarray -t outputs < <(seq 10)

Wobei ich verwendet habe, seq 10um einige Ausgaben zu erzeugen. Dies führt zu:

$ 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")'

So wählen Sie jede Minute pseudozufällig eines dieser Elemente aus:

while :
do
  element=$(( RANDOM % ${#outputs[@]} ))
  var=${outputs[$element]}
  sleep 60
done

Da Bash-Arrays beim Index Null beginnen, $(( ))besagt die Arithmetik, dass der $RANDOMModulo-Wert der Anzahl der Elemente im outputsArray verwendet werden soll.

verwandte Informationen