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 readarray
mit der Befehlsersetzung durch Zeilenumbrüche getrennte Ausgaben in einem Array erfassen. Beispiel:
readarray -t outputs < <(seq 10)
Wobei ich verwendet habe, seq 10
um 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 $RANDOM
Modulo-Wert der Anzahl der Elemente im outputs
Array verwendet werden soll.