Как многократно переключаться между двумя (или более) командами?

Я хотел бы многократно перебирать, чередовать и / или перебирать несколько команд; в виде узора или петли. Желаемый конечный результат можно представить как нечто совсем не похожее на часы .

Я экспериментировал с вариациями этой базовой формулы; но что-то отсутствует, неправильно или нет:

for x in {1..60}; 
do 
    <first command> && 
    sleep 1 && 
    <second command>; 
done

Я думаю, это просто повторение ( do ing) <первая команда> && шестьдесят раз, а затем все последующие операции только один раз , вроде нормально. Я пробовал несколько разных вещей; например, используя { фигурные скобки } , ' кавычки ' , " кавычки " , и так далее; в попытке сгруппировать команды вместе, но безуспешно.

0
12.03.2017, 13:40
4 ответа

Все в порядке, думаю, я понял.

Думаю, мне просто нужно добавить еще один && sleep 1 между <вторая команда> и ; сделано .

Примерно так:

for x in {1..60}; 
do 
    <first command> && 
    sleep 1 && 
    <second command> &&
    sleep 1; 
done
0
28.01.2020, 04:48

Это также можно сделать в bash или zsh в режиме emacs с помощью control+o:

$ set -o emacs
$ echo a
a
$ echo b
b
$ echo c
c

Затем используйте навигацию по истории, чтобы добраться до команды echo a (или соответствующей), затем повторите control+o несколько раз. Команды, начиная с той, по которой вы перешли к самой последней, должны повторяться и зацикливаться на каждом control+o.

0
28.01.2020, 04:48

Один из простых способов сделать это - поместить каждую команду в элемент массива:

commandlist=('echo "hello"' 'echo "howdy"')

И затем перебрать его:

for x in {1..10}; do 
    index=$((x%2))  # % takes the modulus (or remainder) of integer division
    ${foo[$index]}
    sleep 1
done

$ {foo [0]} заменяется на echo " hello ", который затем выполняется.

0
28.01.2020, 04:48

Это работает для меня:

    for x in {1..60}; 
    do echo "1" &&
    sleep 1 &&
    echo "3"; 
    done

Это также работает для меня:

    for x in {1..60}; 
    do echo "1";
    sleep 1;
    echo "3"; 
    done

Каковы ваши другие две команды?

0
28.01.2020, 04:48

Теги

Похожие вопросы