执行某些命令后运行脚本

执行某些命令后运行脚本

我有一个脚本列表

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

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

  • ...

当列表中的这些命令之一执行并完成时,如何自动运行另一个脚本?

答案1

有多种方法可以在特定命令之后自动执行某些操作:

功能

创建一个以您的特定命令命名的函数,然后执行该特定命令。我认为这是最简单、最干净的解决方案。

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

桀骜

使用 zsh,您可以创建一个precmd将在提示符之前执行的函数。这允许您执行任意其他命令,但您必须自己确定执行的命令。

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 具有PROMPT_COMMAND允许您实现自己的precmd函数的变量。要使用它,您必须将其设置为将在提示符之前执行的命令:

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
}

如果你正在使用 bash 并且想要使用类似的东西preexec或者precmd看看precmd 和 preexec 与 bash

相关内容