Executa um script depois que algum comando foi executado

1

Eu tenho uma lista de scripts

  • ./myscript <param> | grep "asd"

  • ./myotherscript <param> <param> > file

  • ...

Como posso executar automaticamente outro script quando um desses comandos na lista é executado e finalizado?

    
por Wolfy 19.05.2012 / 13:07

1 resposta

4

Existem várias maneiras de executar algo automaticamente após um comando específico:

função

Crie uma função com o nome do seu comando específico e execute o comando específico depois. Esta é, na minha opinião, a solução mais simples e mais limpa.

function myotherscript() {
   command myotherscript "$@"
   other_command_to_be_executed
}

zsh

Com zsh você pode criar uma função precmd que será executada antes do prompt. Isso permite que você execute outros comandos arbitrários, mas você mesmo terá que determinar o comando executado.

function precmd() {
   last_cmd=$(history -1 |  sed -e "s/^[ ]*[0-9]*[ ]*//g")
   case "$last_cmd" in
   *myscript*) other_command;;
   *myotherscript*) other_other_command;;
   esac
}

bash

O Bash tem a variável PROMPT_COMMAND , permitindo que você implemente sua própria função precmd . Para usá-lo, você precisa configurá-lo para um comando que será executado antes do prompt:

PROMPT_COMMAND="${PROMPT_COMMAND};bash_precmd"

function bash_precmd() {
  last_command=$(history 1 | sed -e "s/^[ ]*[0-9]*[ ]*//g")
  case "$last_command"  in
  *pattern*) command ;;
  esac
}

Se você estiver usando o bash e quiser usar algo como preexec ou precmd dê uma olhada em precmd e preexec com bash

    
por 19.05.2012 / 15:22