Ein Programm X-mal ausführen

Ein Programm X-mal ausführen

Wie führe ich ein Programm X-mal im Terminal aus?

Ich habe gelesen, dass ich einen Bin/Bash-Txt erstellen muss, weiß aber nicht, wie ich diesen X-mal ausführen kann.

Antwort1

Sie könnenxargsUndseq. Allgemein:

seq nr_of_times_to_repeat | xargs -Iz command

Zum Beispiel:

seq 10 | xargs -Iz xdotool click 1

führt den xdotool click 1Befehl 10 Mal aus.

Antwort2

Öffnen Sie ein Terminal und verwenden Sie den folgenden bashBefehl:

for i in {1..5}; do xdotool click 1; done

Mit etwas Ausführlichkeit und 1 Sekunde Verzögerung:

for i in {1..5}; do echo click \#$i && xdotool click 1 && sleep 1; done
click #1
click #2
click #3
click #4
click #5

Antwort3

Dies sollte Folgendes bewirken:

#!/bin/bash

x=1
while [ $x -le 10 ]
do
  <command to run>
  x=$(( $x + 1 ))
done

wobei 10 die Anzahl der Ausführungen des Befehls ist

falls du eine kleine Pause einbauen musst:

#!/bin/bash

x=1
while [ $x -le 10 ]
do
  <command to run>
  sleep 1
  x=$(( $x + 1 ))
done

Kopieren Sie das Skript in eine leere Datei, ersetzen Sie es <command to run>durch Ihren xdotoolBefehl, speichern Sie es unter und run_xdotool.shführen Sie es mit dem Befehl aus:

sh /path/to/run_xdotool.sh

Alternativ können Sie es ausführbar machen und es einfach ausführen, indem Sie

/path/to/run_xdotool.sh

Eine andere Lösung: Verwenden Sie die integrierte Wiederholungsoption von xdotool

Da Sie erwähnen, dass es zum Klicken verwendet werden soll, ist es möglicherweise am einfachsten, xdotooldie integrierte Wiederholungsoption von zu verwenden. Das Format ist:

xdotool click --delay <delay> --repeat <repeats> <button>
(delay in milliseconds between the clicks)

Um 10 Mausklicks (Taste 1) hintereinander mit einer Sekunde Pause dazwischen auszuführen, lautet der Befehl:

xdotool click --delay 1000 --repeat 10 1

Antwort4

Sie können eine Schleife im C-Stil verwenden for, die gegenüber der Klammererweiterungsversion ( {1..5}) den Vorteil hat, dass Sie Variablen verwenden können, um die Endpunkte anzugeben. Beide Versionen sind besser als die Verwendung eines externen Dienstprogramms ( seq).

t=5
for ((x = 1; x <= t; x++))
do
    xdotool click 1
done

Alles in einer Zeile:

t=5; for ((x = 1; x <= t; x++)); do xdotool click 1; done

Oder Sie können es möglicherweise ohne Schleife tun (für dieses spezielle Dienstprogramm und diese Funktion):

xdotool click --repeat 5 --delay 50 1

verwandte Informationen