Como anexar um comando condicional a um comando que já está em execução?

1

Digamos que eu tenha três comandos que executo assim:

a && b && c

Isso será executado b após a conclusão e c após b ser concluído.

E se eu fizesse isso:

a && b

Enquanto isso estiver em execução, quero anexar c como um comando condicional. Pode ser feito?

    
por tony_sid 14.02.2011 / 12:13

3 respostas

2

Eu faria isso:

  • a && b
  • pressione ctrl-Z para suspender o pipeline atual
  • bg 1 para executá-lo em segundo plano
  • wait %1 && c

wait espera que o trabalho especificado seja concluído e retorna seu status de resultado, de modo que o acima se comporte como a && b && c teria.

Você também pode definir um apelido ou função, por exemplo, alias bgwait='bg 1 && wait %1' . Então, depois de pressionar ctrl-Z , tudo que você precisa digitar é bgwait && c . O suporte a vários trabalhos é deixado como um exercício para o leitor.

    
por 08.07.2011 / 02:07
0

O resultado da última operação é armazenado em $? . 0 significa que nenhum erro ocorreu, qualquer outra coisa é um problema.

Você pode, por exemplo usá-lo assim

if [ $? -eq 0 ]; then c; fi

Faça uma função ou similar no seu .bash_profile e você pode executá-lo um pouco mais confortavelmente.

    
por 14.02.2011 / 12:27
-2

Para o NT, você pode digitar seu novo comando e pressionar ENTER enquanto um comando atual está sendo executado.

Então, por exemplo,

c: \ blah > dir / s

onde blah é grande o suficiente para que você tenha tempo de digitar enquanto as coisas rolam na tela.

agora tudo isso rola na tela

e enquanto estiver aparecendo, digite mem

depois que dir / s estiver completo, o mem será executado.

    
por 14.02.2011 / 12:22