Запустить программу X раз

Запустить программу X раз

Как выполнить программу X раз в терминале?

Я читал, что мне нужно сделать bin/bash txt, но я не знаю, как выполнить это X раз.

решение1

Вы можете использоватьxargsиseq. В целом:

seq nr_of_times_to_repeat | xargs -Iz command

Например:

seq 10 | xargs -Iz xdotool click 1

выполнит xdotool click 1команду 10 раз.

решение2

Откройте Терминал и используйте следующую bashкоманду:

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

С небольшой многословностью и задержкой в ​​1 секунду:

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

решение3

Это должно сделать:

#!/bin/bash

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

где 10 — количество раз выполнения команды

если вам нужно сделать небольшой перерыв:

#!/bin/bash

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

Скопируйте скрипт в пустой файл, замените <command to run>своей xdotoolкомандой, сохраните как run_xdotool.sh, запустите его командой:

sh /path/to/run_xdotool.sh

В качестве альтернативы вы можете сделать его исполняемым и просто запустить его с помощью

/path/to/run_xdotool.sh

Другое решение: использование встроенной опции повтора xdotool

Поскольку вы упомянули, что используете его для выполнения щелчков, проще всего будет использовать xdotoolсобственную встроенную опцию повтора. Формат такой:

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

Чтобы сделать 10 щелчков мышью (кнопка 1) подряд с интервалом в одну секунду, команда выглядит так:

xdotool click --delay 1000 --repeat 10 1

решение4

Вы можете использовать цикл в стиле C for, который имеет преимущество перед версией с раскрытием скобок ( {1..5}), поскольку позволяет использовать переменные для указания конечных точек. Любая из версий лучше, чем использование внешней утилиты ( seq).

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

Все в одной строке:

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

Или вы можете сделать это без цикла (для этой конкретной утилиты и функции):

xdotool click --repeat 5 --delay 50 1

Связанный контент