Como alternar repetidamente entre dois (ou mais) comandos?

0

Gostaria de repetidamente iterar, alternar entre e / ou percorrer vários comandos; em uma espécie de padrão ou loop. O resultado final desejado pode ser considerado como não totalmente diferente de watch .

Eu tenho experimentado com variações desta fórmula básica; mas algo está faltando, errado ou de outra forma:

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

Eu acho que é apenas reiterar ( do ing) o <first command> && sessenta vezes, depois todas as operações subseqüentes apenas uma vez, como normal. Eu tentei algumas coisas diferentes; como usar { chaves } , ' cota ' , " cota " e assim por diante; em uma tentativa de agrupar comandos, sem sucesso.

    
por tjt263 28.02.2017 / 22:50

4 respostas

0

Está tudo bem, acho que descobri.

Acho que só preciso adicionar outro && sleep 1 entre os <second command> e ; done .

Algo como:

for x in {1..60}; 
do 
    <first command> && 
    sleep 1 && 
    <second command> &&
    sleep 1; 
done
    
por 28.02.2017 / 23:37
0

Isso funciona para mim:

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

Isso também funciona para mim:

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

Quais são seus outros dois comandos?

    
por 28.02.2017 / 23:00
0

Uma maneira simples de fazer isso é colocar cada comando em um elemento de uma matriz:

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

Depois, faça uma iteração:

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

${foo[0]} expande para echo "hello" , que é então executado.

    
por 28.02.2017 / 23:00
0

Isso também pode ser feito em bash ou zsh no modo emacs via control + o :

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

Em seguida, use a navegação do histórico para chegar ao comando echo a (ou apropriado) e, em seguida, amasse control + o várias vezes. Os comandos de onde você navegou até o mais recente devem ser repetidos e colocados em loop novamente para cada control + o .

    
por 01.03.2017 / 00:08